UTF-16でハマった為、メモ
Q. 特定の文字だけ化けてしまうのは何故か?
A. 改行コードの変換処理が悪さをしていた
- バージョン9までのMacで、改行コードは「CR」だった
- UTF-16の「名」=「0x540D」、「吊」=「0x540A」
- ツール・ライブラリ・コーディングしてる人の事情
- 開発言語によっては、「CR」を改行として認識してくれない為、(など、諸々のコーディング事情により、)インポートされたファイルに対して改行コード「CR」=「0x0D」を「LF」=「0x0A」に一括置換させる実装がある
- 「名」=「0x540D」など、「0x0D」を使ってる文字まで、「0x0A」に置換される
- 「名」→「吊」に変身する
解決策
以下のいずれか。
- UTF-16を使わない
- 改行コードを置換しない
- UTF-16をUTF-8に変換してから、改行コードを置換する
- UTF-8では、「0x0D」を使っている文字はない為