« 小規模なWebアプリにCodeIgniterが向いている理由 | メイン | CSV Mailer バージョン0.5.8を公開しました。 »

文字コードがJISやEUC-JPの文字列をUnicodeStringに変換したときの波ダッシュ問題

UnicodeStringをJISやEUC-JPに変換するときの波ダッシュ問題は、 MECSUtilsMecsMappingFixJA関数を使うことで解決します。

逆にJISやEUC-JPの文字列をUnicodeStringに変換したときの波ダッシュ問題を解決するための関数として、 MecsMappingFixJAの逆の処理をする関数があると便利だと思います。

処理は単純にMecsMappingFixJAの反対の変換を行えば良さそうでした。

JISやEUC-JPの文字列をUnicodeStringに変換した後、この関数を使用します。

UnicodeString uni = Mecsutils::AnsiToUTF16(raw, CodePage);
uni = Mecsutils::MecsMappingFixJA2(uni);

MECSUtilsに次の関数を追加します。

//JISやEUC-JPをUnicodeStringに変換したときの波ダッシュ問題を解決する関数
function MecsMappingFixJA2(const S: UnicodeString): UnicodeString; overload;
var
  i: Integer;
begin
  result := S;
  for i:=1 to Length(result) do
    case result[i] of
      #$2016:
        result[i] := #$2225;
      #$2212:
        result[i] := #$FF0D;
      #$301C:
        result[i] := #$FF5E;
      #$00A2:
        result[i] := #$FFE0;
      #$00A3:
        result[i] := #$FFE1;
      #$00AC:
        result[i] := #$FFE2;
    end;
end;

関数名はもう少し工夫した方がいいでしょう。

追記:
MECSUtils 1.33で導入していただきました。
UnicodeStringの波ダッシュ問題の回避策のまとめをご覧下さい。

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/1072

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2009年09月24日 20:46に投稿されたエントリーのページです。

ひとつ前の投稿は「小規模なWebアプリにCodeIgniterが向いている理由」です。

次の投稿は「CSV Mailer バージョン0.5.8を公開しました。」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35