作者: 藤岡和夫
日時: 2005/9/04(11:08)
On Sun, 04 Sep 2005 01:02:55 +0900 (JST)
Zazel <zazel.ts@...> さんwrote:

> > > Malformed UTF-8 character (unexpected continuation byte 0x8d,
> with no preceding start byte) in substitution iterator at ee line 77,
> <GEN0> line 1110.
> > 
> > このエラーなんですが、具体的にはどの辺りで出ているのでしょうか?
> > 行数から判断するに藤岡さんのスクリプトではなさそうですよね。
> 
> コマンドラインで http://homepage1.nifty.com/kazuf/renewal.xml
> を指定しているだけなので、LWP で取ってきたデータに対してかな。
> とはいえ、これもそんなに行数がないけど。

 お世話になります。

 Zazelさんのコメントを読んでいるうちに、どうもスクリプトに原因がありそ
うな気がしてきて、スクリプトの出力のエラーメッセージの出ている位置が、
RSSを読み込んでいるところだと遅まきながら気が付きました。スクリプトは
Shift_JISでも、スクリプトが読み込んだ文字列はShift_JISじゃないので、
Zazelさんの書かれた1.の原因に該当すると思われますね。

 従って、今のところ、対策はよくわからないという状況です。encodingという
仕組みは取り扱う文字コードが変化するような場面では使いにくいのではと漠然
と思ったりしています。UserAgentのgetメソッドで取得したデータはencoding下
では指定の文字コードと見做されてしまうのではと思ったり・・・

 少しいろいろと勉強する必要があるような気がしています。簡単なのかもしれ
ませんが・・・問題の部分でのno encodingも結果に影響を与えないし、よくわ
からない。スコープが効くuse bytesを使えばよいのかも・・・

> なお環境は、
> This is perl, v5.8.7 built for i386-freebsd-64int

 やはり、FreeBSDでしたか(^^)CGIならどの環境でもテストできますね。

藤岡 和夫
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/