• ベストアンサー

[perl5.8] utf8で文字出力すると文字化けする

perl5.8で、テキストをunicode(utf8)で出力したのですが、文字化けします。 ソースは以下のとおりです。 -----ソース----- use open OUT => ":encoding(utf8)"; open(OUT, ">utf8.txt"); print OUT "utf8だよ\n"; close(OUT); ----------------- できたファイルはutf8エンコードなのですが、 エディタで見ると「だよ」が文字化けします。 ちなみにフリーソフトで、SJIS形式の「utf8だよ」が 書かれたファイルをutf8に変換すると、文字化けしません。 フリーソフトで生成したutf8ファイルと、 自作perlで生成したutf8ファイルとを バイナリエディタで読込み比較すると 75746638E381A0E382880D0A (フリーソフト) 75746638C282C2BEC282C3A60D0A (自作perl) という差が出ています。 原因がお分かりになる方、知恵をお貸し願えますか。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

そのスクリプト自体は、コードはなにで書かれていますか? シフトJISで書かれていたら スクリプトの先頭に use encoding 'shiftjis'; UTF-8で書かれていたら use encoding 'UTF-8'; とか書いてみて下さい。

ibayac
質問者

お礼

BLUEPIXY様  回答頂きありがとうございました。  ご指摘のとおりの対処法で解決しました。  出力するファイルのエンコードタイプだけでなく、  記述するperlスクリプトのエンコードも記述する  必要があるわけですね。  非常に助かりました。  ありがとうございました。

その他の回答 (1)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.2

以下のページに原因と解決方法が書いてあります。 http://www.pure.ne.jp/~learner/program/Perl_unicode.html

参考URL:
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
ibayac
質問者

お礼

chie65536様 返信ありがとうございます。 お恥ずかしい話ですが、そのページを見ても理解でき ずに質問をしていました。 結論として、出力するファイルのエンコードにばかり こだわらず、perlスクリプトの文字コードも記述しな ければいけないという事がわかり、解決しました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう