UnicodeStringをJISやEUC-JPに変換するときの波ダッシュ問題は、
MECSUtilsのMecsMappingFixJA関数を使うことで解決します。
逆に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の波ダッシュ問題の回避策のまとめをご覧下さい。