文字化けがモヤモヤした件:Unicodeめ!!とか機種依存文字とかの話。

文字化けがモヤモヤした件:Unicodeめ!!とか機種依存文字とかの話。
会社でこちらの件でモヤモヤして最終的に解決できたのだけど
なんだか腑に落ちないので自宅に帰って文字化けの検証をしてみました。

いま勤めている会社、昔ながらのWEBシステムなのか、もしくは
サイトコピー防止の為なのか、euc-jpコードで動いています。
なのでWEBシステムのファイルはEUCなのです。

ここで問題が発生したわけですけど
ajaxで処理をPHP側に投げjsonで返却値が返ってくる場合、
JSはUTF-8なのでUTF-8に文字を変換し返しているわけです、
表面上文字は機種依存文字以外は難なく表示されます。

そこでその戻ってきた文字をコピペして
Windowsのテキストファイルなどにペースト(貼り付ける)すると
文字化けを起こす文字があります。どんな文字が文字化けが発生するかというと、
JIS X 208問題がおきるのです。

何故・・・起きるのかPHPでエンコードするときの問題、
UTF-8で返ってきた後、Unicodeコードの
対応表に従って変換しないといけないと文字化けが発生すると
考えていたのだけど、、そうでは無かった。
Windowsのエディタは基本的にSJIS-Winの文字コードなら文字化けをしない。
要するにJSで送られてきた値はUTF-8を介しているけど
基本SJIS-Winの文字コードな訳だから
UTF-8からSJIS-Winに変換し返す時は、SJIS-WinからUTF-8に変換し
返却してあげることで問題がなくなる。
※但しGETやPOSTで渡されたデータで処理や判断を行う場合。
ファイルがEUC-JPだったりすると
やはりEUC-JP に変換(エンコード)してあげないといけないということをお忘れなく。

じゃMacはどうするのさ~って事だけど
これはUTF-8のままで良い、何もしてあげることはないということ。
スマホブラウザもそんな感じですね。こういう問題が起きるのは
ファイルがEUC-JPやShift-JISなどになっている時に起こる現象なので
UTF-8は駄目という方針でない限り、UTF-8に
ファイルやキャラセットなどを統一したほうが
良いです。そろそろ会社のシステムもUTF-8に変える時期なのかなぁとか
思いますが、何社もEUCで作っていてエンコード部分を修正しないとなると大変だと。
やはりズルズルとEUC-JPをまだ当分の間、使用する事になりそうですね。

ソースを掲載しときます。
ご参考まで。
https://zip358.com/tool/demo/
適当なUnicodeCSV一覧データ。
https://zip358.com/tool/demo/Unicodelist.csv