On Sun, 27 Jun 2004 08:54:00 +0900
藤岡和夫 <kazuf@...> さんwrote:
> encodingのスコープの問題が、使っているモジュール・ライブラリとの関係に
> どのように現れるのか、文字コードをスクリプトの中で変換するような場合にど
> のように影響するのか、検証が必要な気がします。単純ではないですね。また、
> 正規表現の\wがマルチバイト文字にマッチするというのも過去のJPerlスクリプ
> トとの互換性に関しておそらく問題になりますね。JPerlからの移行はそれほど
> 簡単ではない予感がします。
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;
}
}
これが動きません。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と仮定している
からですね。
これはどのようにすれば解決できるのでしょうか。
最終的に念頭に置いているのは、入力するデータは受け取って解析して、例え
ば、XMLのencoding属性から文字コードを取得して、shiftjisに変換して出力す
るというようなことです。
藤岡 和夫
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/