MECSUtilsのMecsMappingFix_UnicodeToCP932関数によって、JIS→Unicode→Shift-JISで全角ハイフンが文字化けする問題が解決した

MECSUtils ver1.54では、文字コードを変換する時にハイフンを上手にマッピングしてくれる。

全角ハイフン(-)をJISからUnicodeへ、UnicodeからShift-JISへ変換すると、Shift-JISに変換した時に文字化けする。
たとえば電子メールを受信して何らかの処理を行い、ファイルに出力する時などに問題が発生する。

//文字化けするJISコードの全角のハイフン
jis: RawByteString = #$1B#$24#$42#$21#$5D#$1B#$28#$42; 

//JISからUnicodeに変換して表示する
Edit1.Text := MECSUtils.AnsiToUTF16(jis, 50220);

JISからUnicodeへ変換した時は問題なく表示される。

このとき全角ハイフンは’MINUS SIGN'(U+2212)になっている。

この’MINUS SIGN'(U+2212)をShift-JISに変換すると文字化けする。

type
  SJISString = type AnsiString(932);
var
  sjis: SJISString;
begin
  sjis := Edit1.Text;  //=> ?

ここで、MECSUtils.MecsMappingFix_UnicodeToCP932関数の出番である。
MECSUtils ver1.54では、文字コードを変換する時にハイフンを上手にマッピングしてくれる。

sjis := MECSUtils.MecsMappingFix_UnicodeToCP932(Edit1.Text); //=> -

これでハイフンが文字化けする問題は解決した。

DEKO様、MECSUtilsの修正ありがとうございました。<(_ _)>

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください