Perl と Encode と シフトJIS と 機種依存文字
Windows の機種依存文字を処理してハマったので覚え書きです。
Perl で普通にシフトJISを扱う場合、
みたいにするわけだけど、Encode の 'Shift_JIS' の変換ってシフトJISの拡張に当たる機種依存文字には対応してないんですよね。だから「①」とかを decode して encode すると文字化けしちゃうわけですよ。
じゃぁ、どうするかってぇと、CPANモジュールの Enocde::JIS2K というのを使うのが一番問題なさそう。
でも環境固定で勝手にCPANモジュールを入れられないよ! ってときは、文字コードを 'Shift-JIS' ではなくて 'cp932' として処理するといいみたい。
じゃぁ、他の環境だとどうすんの? とちょっと思ったけど、今どき文字コードでシフトJISを使ってるのなんて Windows くらいだろうから、たぶんこれでOK・・・という事にしておこう。
Excel操作はcp932だと思うが、、、
全く以て文字化けを解消できない・・・困った。
Posted by: 匿名 | 04/23/2022 at 01:20
コメントありがとうございます。
Windous上でなら、ではありますが、僕だったらExcelからの読み込みはPowerShellで作って、文字コードの変換もPowerShellでやって、テキストに書き出すとかしてから、Perlで処理するかなぁ?
Posted by: 夢界 | 04/23/2022 at 20:36