2008年02月17日

文字コード変換ライブラリ「ICU」での文字コード変換処理

UTF-8エンコーディングの文字が書かれているファイル("utf8_src.txt")を準備して、プログラムでファイルの1行目を読み込み、その文字列からUnicodeStringオブジェクトを構築してから、SJISにコード変換するサンプルです。

文字コード変換ライブラリ「ICU」セットアップ
が行われいることが前提です。


#define WIN32_LEAN_AND_MEAN
#include <stdio.h>
#include <string>
#include <fstream>


#include <unicode/unistr.h> // ICU


int main(int argc, char* argv[])
{
std::fstream r("utf8_src.txt");
std::string str;
r >> str;


//一旦Unicodeで文字列オブジェクトを構築して、extractメソッドで
//他のマルチバイト文字に変換します。


//Unicodeオブジェクト構築 例:"shift_jis"、 "utf8"、 "euc-jp"
icu::UnicodeString src(str.c_str(), "utf8");


//変換後の文字列長を取得
int32_t len = src.extract(0, src.length(), NULL, "shift_jis");


//変換後文字列の格納領域を準備
char* result = new char[len + 1];


//文字コード変換
src.extract(0, src.length(), result, "shift_jis");


//変換結果確認
printf("[%s]\n", result);


delete [] result;
return 0;
}


posted by 台北猫々 at 11:59| Comment(0) | TrackBack(0) | 技術メモ(Windows C/C++)
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/11016429

この記事へのトラックバック