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で確認しました。
Pingback: 山本隆の開発日誌