• ベストアンサー

&jcode'convert(しても文字化けする

cgiにある日本語文書contents.txtをメール受信すると文字化けします。 解決策を教えてください。 require './jcode.pl'; open(FH, ">contents.txt"); print FH @contents; close(FH); #連結 $contents=""; foreach $key (@contents) { $contents=$contents.$key; } &jcode'convert(*contents,'jis');

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

どのjcode.plでしょうか? 改造されていない限り、jcode.plはUnicodeに対応していません。 @contentsがUTF-8だったりしたら、jcode.plでは対応できません。 Perlが古い等の理由が無いのなら、Encodeモジュールを使いましょう。

7777777v
質問者

お礼

ありがとうございました、頂いた回答をヒントに以下のようにして解決しました。 use Jcode; $subject = Jcode::convert( $subject, "jis", ""); $contents = Jcode::convert($contents, "jis", "");

7777777v
質問者

補足

回答ありがとうございます。 普通のjcode.plですが、メール送信の日本語文書はHTMLのjavascriptで1行入力の文字列をencodeURIしてcgiのパラメータにしています。 cgiではこの文書を蓄積してメール送信しています。 日本語はUTF-8コードの可能性があります、encodeURIの変換又はその後でjisかsjisでcgiに渡せないでしょうか?

関連するQ&A