请问一个string类型的韩文字符串 如何写入文本呢?
测试是: 多字节的韩文字符串写入文本显示乱码,转换成宽字节然后写入文本也是乱码,只有直接定义宽字节写入才不显示乱码。
汉字没问题 就是韩文不行。
我用的vs2010 在unicode模式和多字节模式都是这样
如果我要把多字节的文本写入文本怎么做呢,请求各位大大。
BOOL StringToWString(const std::string &str,std::wstring &wstr)
{
int nLen = (int)str.length();
wstr.resize(nLen,L' ');
int nResult = MultiByteToWideChar(CP_ACP,0,(LPCSTR)str.c_str(),nLen,(LPWSTR)wstr.c_str(),nLen);
if (nResult == 0)
{
return FALSE;
}
return TRUE;
}
wstring str1=L"?????111"; //显示正确
string str2="?????222";//显示错误
wstring str3;
StringToWString(str2,str3);//显示错误
CFile f;
f.Open("c:\\1.txt", CFile::modeCreate | CFile::modeWrite, 0);
BYTE buff[] ={0xff,0xfe};
f.Write((void*)buff,2);
f.Write(str3.c_str(),str3.length());
f.Close();
------解决思路----------------------
一般都是用两次 MultiByteToWideChar函数。
第一次返回转换后的字符数,然后申请这个字符数加一的内存。
第二次把申请的内存和返回的字符数传进去。
记得把申请内存的最后一个字符置0.
------解决思路----------------------
前面已经写入了 FF FE, 就用UNICODE 写入
f.Write(str1, str1.length()*sizeof(wchar_t)
------解决思路----------------------
还要你的韩文字体等能够支持,中文可以的话,那么代码编码等应该没问题
------解决思路----------------------
中文系统里默认无法显示多字节的韩文,只能用UNICODE
或者你也可以下载个韩文语言包试下.
------解决思路----------------------
用记事本打开。
------解决思路----------------------
bom头写没写?