Rubyについて Part 36

このエントリーをはてなブックマークに追加
641デフォルトの名無しさん
>>262-263 あたりのnokogiriの話。

どうもnokogiriのWindows版gemに同梱されてるDLLは
libXML2の公式サイトからリンクされてる
ttp://www.zlatkovic.com/libxml.en.html
のもののようなので、
ttp://www.zlatkovic.com/pub/libxml/iconv-1.9.2.win32.zip
のDLLの情報等を参考にしつつ、libiconvの1.13に
森山さんのところのパッチ
ttp://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.13-ja-patch.html
をあてたものを
MinGW/MSYSでビルドして、MSYS環境でそのままビルドすると
libiconv-2.dllとかしか出来ないので、ビルド時に生成された*.oに
libiconv-2.dllから抜き出したdefファイルを加えて
dllwrapでiconv.dllを生成……

ということで結果としてlibiconv-1.13-ja-1相当のiconv.dllを
作成してdllの検索パス(nokogiriの元の構成通りだとbin直下)に
配置したところ、>>262
>#Shift_JISの範囲外の文字を含んだWindows-31J(=CP932)エンコーディングの文字列
>irb(main):001:0> s="<html><HEAD><TITLE>11@11@</TITLE></HEAD><body></body></html>"
>=> "<html><HEAD><TITLE>11@11@</TITLE></HEAD><body></body></html>"
>#Windows-31JエンコーディングでHTMLパース。失敗。
>irb(main):003:0> Nokogiri::HTML.parse(s,nil,'Windows-31J')
が通るように。

とりあえず今回生成したiconv.dllは
需要があるかどうか何とも言えないけどうpっておきます。
ttp://www1.axfc.net/uploader/Sc/so/23793.zip