- 1 名前:デフォルトの名無しさん [2009/06/28(日) 16:29:28 ]
- オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。
前スレに変なのが沸いて流れてしまいましたが、まったりと行きましょう。 Ruby Home Page www.ruby-lang.org/ja/ = 前スレ Rubyについて Part 35 pc12.2ch.net/test/read.cgi/tech/1238194350/ 過去スレ・関連スレは >>2-
- 262 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 02:57:50 ]
- NokogiriがWindows-31Jエンコーディングをサポートしていない気がする。
正確にはNokogiriが使っているlibxml2が呼んでいるiconvかもしれないけど。 >irb -Ks -rrubygems -rnokogiri #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>" #エンコーディング指定なしでHTMLパース。当然失敗。 irb(main):002:0> Nokogiri::HTML.parse(s) encoding error : output conversion failed due to conv error, bytes 0x82 0x50 0xC 2 0x87 I/O error : encoder error => #Windows-31JエンコーディングでHTMLパース。失敗。 irb(main):003:0> Nokogiri::HTML.parse(s,nil,'Windows-31J') encoding error : output conversion failed due to conv error, bytes 0x82 0x50 0xC 2 0x87 I/O error : encoder error =>
- 263 名前:デフォルトの名無しさん mailto:sage [2009/07/23(木) 03:00:30 ]
- #CP932エンコーディングでHTMLパース。成功。
irb(main):004:0> Nokogiri::HTML.parse(s,nil,'CP932') => <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "www.w3. org/TR/REC-html40/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=CP932"> <title>11@11@</title> </head> <body></body> </html> #Shift_JISエンコーディングでHTMLパース。Shift_JISの範囲内のところまで中途半端にパース。想定通り。 irb(main):005:0> Nokogiri::HTML.parse(s,nil,'Shift_JIS') => <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "www.w3. org/TR/REC-html40/loose.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>11</title> </head></html> ちなみに環境はこんな感じ。現在入手できる最新のActiveScriptRubyとNokogiri。 >ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32] >gem list nokogiri I:\home\a_i\script>gem list nokogiri *** LOCAL GEMS *** nokogiri (1.3.2)
|

|