文字コードが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の波ダッシュ問題の回避策のまとめをご覧下さい。

コメントを残す

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