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の修正ありがとうございました。<(_ _)>