- ベストアンサー
Shift-jisのPerlから、UTF-8、EUC、Shift-jisの3つのエンコードテキストを生成
Shift-jisで作ったPerlにて、テキストをEUC、UTF-8、Shift-jisにエンコードし外部検索サイト等にテキストリンクを飛ばしたいのですが、うまくいきません。 過去ログにUTF-8から、EUC、UTF-8、Shift-jisへのエンコード方法をみつけ http://oshiete1.goo.ne.jp/qa3745875.html 試行錯誤しましたが、Shift-jisからはうまくいきませんでした。 perl のバージョンは5.8.8です。 ご教示のほどよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんなコードでテストしてみました。sjis <-> jis,euc,utf8 すべてうまくいけましたよ。 #!/usr/bin/perl use Jcode; print "content-type: text/html; charset=Shift_JIS\n\n"; $sjis='Japan,東京都千代田区霞が関1-1-1 コッカイビル1F'; print '<font color=red>'; print Jcode::getcode($sjis).' -> </font>'; $jis=Jcode::convert(\$sjis,'jis'); print '<font color=red>'; print Jcode::getcode($jis).' => </font>'; print $jis." <br>\n"; print '<font color=red>'; print Jcode::getcode($sjis).' -> </font>'; $euc=Jcode::convert(\$sjis,'euc'); print '<font color=red>'; print Jcode::getcode($euc).' => </font>'; print $euc." <br>\n"; print '<font color=red>'; print Jcode::getcode($sjis).' -> </font>'; $utf8=Jcode::convert(\$sjis,'utf8'); print '<font color=red>'; print Jcode::getcode($utf8).' => </font>'; print $utf8." <br>\n"; print "<br>\n"; print '<font color=red>'; print Jcode::getcode($jis).' -> </font>'; $sjis=Jcode::convert(\$jis,'sjis'); print '<font color=red>'; print Jcode::getcode($sjis).' => </font>'; print $sjis." <br>\n"; print '<font color=red>'; print Jcode::getcode($euc).' -> </font>'; $sjis=Jcode::convert(\$euc,'sjis'); print '<font color=red>'; print Jcode::getcode($sjis).' => </font>'; print $sjis." <br>\n"; print '<font color=red>'; print Jcode::getcode($utf8).' -> </font>'; $sjis=Jcode::convert(\$utf8,'sjis'); print '<font color=red>'; print Jcode::getcode($sjis).' => </font>'; print $sjis." <br>\n"; __END__
その他の回答 (1)
- _--_1l1_1_
- ベストアンサー率67% (102/152)
use encoding 'shiftjis';を使えばいいと思いますが、100%対応するのは、難しいかもしれません。参考URLを参照して下さい。
お礼
貴重な情報をいただき誠にありがとうございました。 また1つ良い知識を得ることができました。
お礼
貴重な情報をいただき誠にありがとうございました。 当方の設定が悪いのか残念なことに動作確認することができませんでした。 頂戴した情報を参考にし、以下のコードで期待する結果を得ることができました。 $sjis='Japan,東京都千代田区霞が関1-1-1 コッカイビル1F'; $K_euc=$sjis; $K_utf=$sjis; $sjis =~ s/(\W)/$escape{$1} ||= sprintf("%%%02X", ord($1))/eg; Jcode::convert(\$K_euc, 'euc'); $K_euc =~ s/(\W)/$escape{$1} ||= sprintf("%%%02X", ord($1))/eg; Jcode::convert(\$K_utf, 'utf8'); $K_utf =~ s/(\W)/$escape{$1} ||= sprintf("%%%02X", ord($1))/eg;