UnicodeStringをJIS(ISO-2022-JP)に変換すると文字が減る

C++Builder 2009で確認したところ、UnicodeStringをJISコードに変換すると文字が減るようだ。

//UTF-8
AnsiStringT<65001> utf8 = L"文字コード"; //=> 文字コード

//Shift_JIS
AnsiStringT<932> sjis = L"文字コード"; //=> 文字コード

//EUC_JP
AnsiStringT<20932> euc = L"文字コード"; //=> 文字コード

//x-mac-japanese
AnsiStringT<10001> mac = L"文字コード"; //=> 文字コード

//JISコードの時は文字が減る
//iso-2022-jp(JIS)
AnsiStringT<50220> jis1 = L"文字コード"; //=> 文字コ

//csISO2022JP (JIS 1 バイト カタカナ可)
AnsiStringT<50220> jis2 = L"文字コード"; //=> 文字コ

//iso-2022-jp (JIS 1 バイト カタカナ可 - SO/SI)
AnsiStringT<50220> jis3 = L"文字コード"; //=> 文字コ

どうやらマルチバイト文字が混ざると問題になるみたい。

AnsiStringT<50220> jis1 = L"12345";
UnicodeString s1 = jis1; //12345

AnsiStringT<50220> jis2 = L"abc";
UnicodeString s2 = jis2; //abc

AnsiStringT<50220> jis3 = L"あいう";
UnicodeString s3 = jis3; //あ

もう少し調べてみたい。

追記
C++Builder 2009で確認しました。

コメント

  1. Pingback: 山本隆の開発日誌

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください