391. Re: Perl5.8.1では、ShiftJISの2バイト目に含まれる\x5Cの問題は解決されている


番号順一覧Top スレッド順一覧Top
作者: 藤岡和夫
日時: 2004/6/27(12:44)
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/
前の発言: 390. Re: Perl5.8.1では、ShiftJISの2バイト目に含まれる\x5Cの問題は解決されている [藤岡和夫] 2004/6/27(11:44)
後の発言: 392. Re: Perl5.8.1では、ShiftJISの2バイト目に含まれる\x5Cの問題は解決されている [dune] 2004/6/27(13:29)
親発言: 388. Re: Perl5.8.1では、ShiftJISの2バイト目に含まれる\x5Cの問題は解決されている [藤岡和夫] 2004/6/27(11:19)
子発言: