On Sun, 27 Jun 2004 11:19:03 +0900
藤岡和夫 <kazuf@...> さんwrote:
> use encoding "shiftjis";
> use LWP::Simple;
> @lines = split(/\n+/,get("http://homepage1.nifty.com/kazuf/renewal_2004_05.html"));
> $pattern = "ソレイユ";
> foreach $line (@lines){
> if($line =~ /$pattern/){
> print $line;# 修正済み
> }
> }
>
> これが動きません。JPerlなら、use encodingの行をコメントするだけで動き
> ます。LWP::Simpleのgetで受け取った文字列がshiftjis文字列として認識されな
> いみたい・・・エラーメッセージが出ないのは、if文の条件式がエラーになって
> いるから。if文と$patternの行をコメントにして単に出力すると、
>
> "\x{0082}" does not map to shiftjis at jplwp.pl line 7.
> "\x{00ab}" does not map to shiftjis at jplwp.pl line 7.
>
> このようなエラーになるのは、入力している文字コードをUTF-8と仮定している
> からですね。
>
> これはどのようにすれば解決できるのでしょうか。
Perl5.8のSimple.pmの最初のほうに
use encoding "shiftjis";
の行を追加すると、意図どおりに動くようになりました(^^;)しかし、この方法
では、文字コードの変化に対応できない。
> 最終的に念頭に置いているのは、入力するデータは受け取って解析して、例え
> ば、XMLのencoding属性から文字コードを取得して、shiftjisに変換して出力す
> るというようなことです。
こちらが問題ですね。
藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/