文字コード変換

rubyやらphpの統合開発環境らしいAptana。デバッグできなさそうなので微妙。Javascriptに関してはなかなか良さそう。

UTF8からSJISへの変換は、PHPとかならさくっとできますが、Cではどうなのか。
Cではきついというか、自分で作らなきゃいけないような気がするけど、WinAPIを使えば、ちょっとましになる。
やり方としては、UTF8⇒UCS2⇒SJIS(MS932)。
つまり、


wchar_t *ucs2;
char *sjis;
int wlength;
int length;

wlength= MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);
ucs2 = new wchar_t[wlength];     // たぶん、wlength+1とかいらない。ナル文字まで含んだ「文字数」が上で返る。
MultiByteToWideChar(CP_UTF8, 0, utf8, -1, uc2, wlength);

length = WideCharToMultiByte(CP_ACP, 0, ucs2, -1, NULL, 0, NULL, NULL);
sjis = new char[length];
WideCharToMultiByte(CP_ACP, 0, ucs2, -1, sjis, length, NULL, NULL);

delete[] ucs2;
return sjis;

こまかいパラメータとかは、
マイクロソフトの、こことかここを見るといいと思うよ。

以上

コスミー について

昔(?)はゲーム作ってました。 今もなんか作ろうとしています。
カテゴリー: C++, Tips パーマリンク

コメントを残す

メールアドレスが公開されることはありません。