• 締切済み

Perl初心者です。文字化けについて

プログラムの知識がほとんどないので、質問に足りないところがありましたら申し訳ありません。 Perlで書かれた、XMLを読み込むツールがあります。 XML上では文字化けしていないのに、ツールで読み込むと文字化けしてエラーになってしまいます。 Inputファイル(XML)とOutputファイル(エラーログ)の文字データを比較すると、文字化けしている文字の1バイト目がなくなっていることがわかります。 このような場合の対処方法がありましたら、教えてください。 私がツールの中身を理解できておらず、何か必要な情報などがありましたら、ご指摘ください。 宜しくお願いします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

>XMLの中に「問処」という言葉がいくつか出てくるのですが、文字化けになる場合とならない場合があります。 ということであれば、「問処」が原因で無いかもしれませんね。 発生する場合のその前に連なる文字を書いてみてください。 そのプログラムが「Shift_JISに対応している」というのが怪しいです。

sugaroreggplant
質問者

お礼

お礼が遅くなり申し訳ありません。 現在データとして他にエラーが発生するXMLが残っていないので、またエラーが発生した時に他のパターンも調べてみたいと思います。 ありがとうございました。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

誰かの作ったプログラムを利用しているだけということですよね? 発生している文字化けとは日本語の部分が化けていると言うことで良いですか?1バイト文字しか無いのに違う文字に変わってしまうということなら、プログラムのバグもしくは利用方法の誤りでしょう。 まず最初の確認としては、XMLファイルの文字コードは普通はUTF-8でそうで無い場合宣言が必要ですが、そのあたりは大丈夫でしょうか? あと、そのPerlプログラムは日本語など多バイト文字に対応しているのでしょうか?対応していると書かれている場合、UTF-8以外にも対応してそうかどうか(UTF-8以外の文字コードを使っている場合)。

sugaroreggplant
質問者

補足

ありがとうございます。 説明が不足していて申し訳ありません。 発生している文字化けは日本語で合っています。 具体的な例は「処」という文字です。 プログラムはShift-JISに対応していて、XMLもShift-JISで書かれています。 XMLの中に「問処」という言葉がいくつか出てくるのですが、文字化けになる場合とならない場合があります。 文字化けになった部分のInputとOutputをShift-JISで比較すると、"96 e2 8f 88"と"96 e2 88"となっていて、Outputの「処」の"8f"がなくなっています。 現在の対応としては、XML上で文字化けする文字の前に半角スペースを入れると(「問 処」とする)文字化けが発生しなくなるので、今はそのように対応しています。 何かエラーが発生しなくなる方法がわかりますでしょうか?

関連するQ&A