Skip to content
 

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. Windows 2000でWideCharToMultiByte関数を使うと、ISO-2022-JPのバイト数を間違う
  2. Windows XPでWideCharToMultiByte関数を使い、ISO-2022-JPに変換するときの注意点
  3. C++Builder 2010のIndyでメール送信について
  4. C++Builder2009とDelphi2009のUnicodeStringの挙動の違い
  5. UnicodeString#LastChar()がILINK32エラー

One Comment

  1. Windows 2000でWideCharToMultiByte関数を使うと、ISO-2022-JPのバイト数を間違う

    前回のUnicodeStringをJIS(ISO-2022-JP)に変換すると文字が減るの続き。

    UnicodeStringをJISコードに変換すると文字が減るという問題です。

    AnsiStringT<50220> jis1 = L”文字コード”; //=> 文字コ

    Windo…

Leave a Reply