說明:
記事本txt有四種編碼方式,分別為:UTF-8、ANSI、Unicode和Unicode big endian,當進行寫操作,創建的txt編碼格式,與寫入漢字的編碼方式相同;如果寫入的漢字是不同的編碼方式,此時創建的txt中,會出現亂碼,所以需要把漢字轉化為同一編碼方式。
本文主要介紹:把漢字編碼方式,由ANSI方式轉化為UTF-8方式:
一、ANSI轉化為UTF-8程序:
- CString ToUTF8(const wchar_t* buffer, int len) //返回類型為CString
- {
- int size = ::WideCharToMultiByte(CP_UTF8, 0, buffer, len, NULL, 0, NULL,
- NULL);
- if (size == 0)
- return "";
- std::string newbuffer;
- newbuffer.resize(size);
- ::WideCharToMultiByte(CP_UTF8, 0, buffer, len,
- const_cast<char*>(newbuffer.c_str()), size, NULL, NULL);
- //如需返回string類型,直接 return newbuffer
- TCHAR outstr[64]; //string 轉化為CString返回
- CString strTemp;
- memset(outstr, '\0', sizeof(outstr));
- memcpy(outstr,newbuffer.c_str(),newbuffer.size());
- strTemp.Format("%s",outstr);
- return strTemp;
- }
二、函數調用形式
- wstring text = L"漢字";
- CString strTemp = ToUTF8(text.c_str(),text.size());