InnoPM開発日誌

株式会社電縁が提供するプロジェクト・工数管理InnoPMについて

Perl: 「治」と入力したはずが「。(半角句点)」が表示される!?

こんにちは!

本日は日本語の文字コードに関する話題です。

いわゆる機種依存文字と呼ばれる文字を利用して文字化けが起こることがありますが、それ以外にも日本語には扱いの難しい文字が存在します。

今回、エクセルインポート機能を作成した際に、「治」という名前の人が「。(半角句点)」になってしまいました。

いろいろ調べると、エクセルからのインポートなので文字コードはShift-JISですが、Perl文字コード自動判別でEUCと認識されてしまい「。(半角句点)」に変換されてしまった、ということでした。

特定の文字が1文字の場合に発生する現象のようで、2文字以上だと自動判別が確実なようです。

インポート元ファイルはエクセルで、文字コードはShift-JISだと思うので、サーバ側の文字コードを自動判別でなく固定にすることで対応しました。

わざわざShift-JIS以外の文字コードでエクセル作ってくる人とかいたりして。。。その時は仕方ないですね!

参考URL
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1269351892