[align=left]不多说,上代码:HANDLE hf_w,hf_c;
DWORD dw1,dw2;
int n,m;TCHAR str_w[256] = L"一二三四五k";
char  str_c[256] = "一二三四五k";hf_w = CreateFile(L"C:\\宽字符.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
n = wcslen(str_w);
WriteFile(hf_w, str_w, n*2, &dw1,NULL);
CloseHandle(hf_w);hf_c = CreateFile(L"C:\\窄字符.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
m = strlen(str_c);
WriteFile(hf_w, str_c, m, &dw1,NULL);
CloseHandle(hf_c);
[/align]

解决方案 »

  1.   

    TCHAR char 傻傻分不清楚
      

  2.   

    hf_c = CreateFile(L"C:\\窄字符.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    m = strlen(str_c);
    WriteFile(hf_w, str_c, m, &dw1,NULL);//往hf_w写入?
    CloseHandle(hf_c);
      

  3.   

    代码没问题,只是编辑器没识别出来是unicode编码。
    打开文件先写入BOM信息即可 char bom[2]={0xff,0xfe};
    WriteFile(hf_w, rom, 2, &dw1,NULL);
    n = wcslen(str_w);
    WriteFile(hf_w, str_w, n*2, &dw1,NULL);
    这样编辑器就能识别出来了。
      

  4.   

    unicode文本需加上文件头FF FEHANDLE hf_w,hf_c;
    DWORD dw1,dw2;
    int n,m;WCHAR str_w[256] = L"一二三四五k";
    char  str_c[256] = "一二三四五k";BYTE h[] = {0xFf, 0xFE};hf_w = CreateFileW(L"C:\\宽字符.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    n = wcslen(str_w);
    WriteFile(hf_w, h, 2, &dw1,NULL); // 
    WriteFile(hf_w, str_w, n*2, &dw1,NULL);
    CloseHandle(hf_w);hf_c = CreateFileW(L"C:\\窄字符.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
    m = strlen(str_c);
    WriteFile(hf_c, str_c, m, &dw2,NULL); // hf_w 改为 hf_c
    CloseHandle(hf_c);