c++UTF 8のstringからUnicodeのwstringへ
1217 ワード
概要
そうかんかんすう
機能:文字列をワイド文字(unicode)の文字列にマッピングします. CodePage変換する文字セットを指定 CP_UTF 8はUTF 8変換 を用いる. CP_ACPはANSI変換 を用いる
lpMultiByteStr変換する文字列 を指す. cbMultiBytelpMultiByteStrパラメータのバイトサイズは、値を-1に設定するとnullで文字列が終了し、自動的に長さが計算されます. lpWideCharStr変換後の文字列を受信バッファへのポインタ cchWideCharは、パラメータlpWideCharStrによって指定されるバッファの幅文字数を指定します.この値が0の場合、関数はバッファに必要な幅文字数を返します.
コード#コード#
参考資料 MultiByteToWideChar
rapidjson
でローカルjsonファイルを解析したところ、中国語文字が文字化けして表示され、jsonファイルはUTF8
で符号化され、VSプロジェクトではUnicode
文字セットが使用されているため、jsonで取得したstring
をwstring
に変換する必要がある.そうかんかんすう
int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cbMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
);
機能:文字列をワイド文字(unicode)の文字列にマッピングします.
コード#コード#
wstring UTF8ToUnicode(const string &s)
{
wstring result;
//
int length = MultiByteToWideChar(CP_UTF8, 0, s.c_str(), -1, NULL, 0);
wchar_t * buffer = new wchar_t[length];
::MultiByteToWideChar(CP_UTF8, 0, s.c_str(), -1, buffer, length);
result = buffer;
delete[] buffer;
return result;
}
参考資料