中文文件名乱码
用FindNextFile系列api, 遍歷目錄, 將得到的文件名(unicode)保存在WTL::CString字符串中
?
使用ofstream o();
USES_CONVERSION;
_acp = CP_UTF8;
o << T2A(LPCTSTR(..)) << endl;
?
?
?
讀取時, 使用的是ifstream + char buffer;
逐行讀到char buffer中之后, 將文件名部分從utf8轉為unicode, 如下:? 才能正確打開windows系統下的文件名
?
wchar_t * u82unicode(char *szU8, wchar_t *dst, int len) {int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);if(wcsLen >= len) return 0;//轉換::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), dst, wcsLen);//最后加上'\0'dst[wcsLen] = '\0';return dst; }
============================================================================================
windows使用unicode
不設置_acp、直接T2A寫到文本文件中時, 有些亂碼信息會丟掉。!!!【因為_acp沒設置對。_acp是USES_CONVERSION宏的變量】。。。。。
總結
- 上一篇: win7 64编译64位boost
- 下一篇: hadoop centos 安装