さんざん悩んだけど問題なかった話

jis

今回は文字コードの話。

結論から言うとmacwinの番地違いだった。

mySqlから取り出したレコードをCSV形式で保存すると、そのままでは機種依存文字が文字化けする。

具体的には、CSVファイルをエクセルで使用するために、utf-8の文字列をshift-jisに変換するのだが、これを、

$str = mb_convert_encoding($str, ‘shift-jis’, ‘UTF-8’);

としてしまうと、?になったり消えてしまったりする。

色々ググった結果、

$str = mb_convert_encoding($str, ‘sjis-win’, ‘UTF-8’);

とすれば問題なく表示できる。

のだが、ここからが無意味に悩んでしまった。

なぜなら、期待通りに機種依存文字が表示されないからだ。

◯で囲った数字を1、2と入れていくと、ブラウザでの表示は問題ないがCSVで書き出し、エクセルで開くと◯に日、月となってしまい嵌ってしまった。同じように()に株を入れた場合もブラウザでは問題ないが、エクセルでは?となってしまった。

と、いうわけで最初の結論に戻るのだが、macのエクセルで開いたのがこの現象のキモで、winのエクセルでは何ら問題ない。問題なのはOS間の互換性のなさであったとさ。

えーマジ”shift-jis!?キャハハ、キモーイ。

shift-jis”が許されるのはXPまでだよねー。キャハハハハ