私のソフトウェアの要件は、エクスポートされたデータを含むファイルのエンコーディングが UTF8 であることです。しかし、データをファイルに書き込むとき、エンコーディングは常に ANSI です。(これを確認するには、Notepad ++を使用します。)
私が現在行っているのは、ファイルを読み取り、UTF8 に変換し、テキストを新しいファイルに書き込むことによって、ファイルを手動で変換しようとしていることです。
line
です です ですstd::string
inputFile
ですstd::ifstream
pOutputFile
ですFILE*
// ...
if( inputFile.is_open() )
{
while( inputFile.good() )
{
getline(inputFile,line);
//1
DWORD dwCount = MultiByteToWideChar( CP_ACP, 0, line.c_str(), -1, NULL, 0 );
wchar_t *pwcharText;
pwcharText = new wchar_t[ dwCount];
//2
MultiByteToWideChar( CP_ACP, 0, line.c_str(), -1, pwcharText, dwCount );
//3
dwCount = WideCharToMultiByte( CP_UTF8, 0, pwcharText, -1, NULL, 0, NULL, NULL );
char *pText;
pText = new char[ dwCount ];
//4
WideCharToMultiByte( CP_UTF8, 0, pwcharText, -1, pText, dwCount, NULL, NULL );
fprintf(pOutputFile,pText);
fprintf(pOutputFile,"\n");
delete[] pwcharText;
delete[] pText;
}
}
// ...
残念ながら、エンコーディングはまだ ANSI です。解決策をしばらく探しましたが、常に MultiByteToWideChar と WideCharToMultiByte を介して解決策に遭遇します。ただし、これは機能しないようです。ここで何が欠けていますか?
私もここで解決策を探しましたが、ほとんどのUTF8の質問はC#とphpのものを扱っています。