Nokogiri 中文亂碼的幾種情況

2021-08-30 20:18:32 字數 2812 閱讀 3086

[color=red]更新[/color]2011/11/15

有些不是ie上的了

如果不確定目標是什麼編碼,ruby1.9開始可以用string類內建的encoding來得到編碼。

puts iconv.iconv("utf-8", doc.to_s.encoding.to_s, doc)

使用//ignore忽略無法轉換的字元

iconv.iconv("utf-8//ignore", "gbk//ignore", doc)

參考,[url=老宋rubyer[/url]中文ruby力量,必須支援

在檔案頭指定程式編碼

在***.rb頭上新增,注意:一定要在第一行,中間新增無效

#coding: utf-8

這個是用來處理**編碼的,就是**中的中文

---------------華麗麗的歷史小分割------------------------

簡單彙總,都是je上的,就是弄到一起

第一種情況,open的**引數有中文

url="語言藝術=1001"

nokogiri::html(open(url))

就會報錯,因為瀏覽器打包給伺服器傳送引數的時候是經過編碼的,所以我們也要給漢字經過一次編碼,只需在這兩句中間加上一句就可以了

url=uri.escape(url)

這樣 rul 字串就被編碼成 這樣:sql%e8%af%ad%e8%a8%80%e8%89%ba%e6%9c%af就沒問題了

[url=來自這裡[/url]

第二種情況, 自己**是utf-8,open的**是gb2312有中文

doc = nokogiri::html.parse(open(""), nil, "gb2312")  

@links = doc.css("a")

[url=出自虎炮回答[/url]

第三種是需要 iconv轉換

目標網頁是gb2312編碼,有些頁面能採回來,有些又提示有 無效的字元編碼

ruby**

doc = nokogiri::html(open(url))

改為

doc = iconv.iconv("utf-8","gb2312",nokogiri::html(open(url)))

url = ""  

doc = nokogiri::html(open(url))

doc.css("h3").each do |c|

puts iconv.iconv("gbk//ignore", "utf-8//ignore", c.content)

end

[url=參考論壇[/url]

require 'nokogiri'

require 'open-uri'

doc = nokogiri::html(open(''))

doc.css('h3.r a.l').each do |link|

puts link.content

end

doc = nokogiri::html(open(''))

doc.css('h3.r a.l').each do |link|

puts link.content

end

換種方式實現:

doc.xpath('//h3/a[@class="l"]').each do |link|

puts link.content

end

doc.xpath('//h3/a[@class="l"]').each do |link|

puts link.content

end

我們還可以這樣來寫:

doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|   

puts link.content

end

doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|

puts link.content

end

編碼問題需要另行轉換。

結果如下所示:

[quote]aaron patterson (tenderlove) on twitter

tender love******

force m.d. - tender love lyrics

force mds - tender love

jordan knight - tender love

alicia keys- tender love(live)

tenderlove's nokogiri at master - github

tender love and care on flickr - photo sharing!

usher - tender love lyrics

love quotes - tender love quotes[/quote]

Qt中文亂碼的幾種情況

測試環境 qt5.9.6 使用vs2017的編譯器。一 亂碼現象 1.源 中的中文顯示亂碼 2.編譯時出現 常量中有換行符 的警告。3.執行時軟體介面中文顯示亂碼 二 解釋 1.qtcreator編輯器預設採用utf 8編碼讀取檔案。vs預設採用本地編碼 我們使用的windows一般為gb2312 ...

Qt中文亂碼的幾種情況

測試環境 qt5.9.6 使用vs2017的編譯器。一 亂碼現象 1.源 中的中文顯示亂碼 2.編譯時出現 常量中有換行符 的警告。3.執行時軟體介面中文顯示亂碼 二 解釋 1.qtcreator編輯器預設採用utf 8編碼讀取檔案。vs預設採用本地編碼 我們使用的windows一般為gb2312 ...

Tomcat解決中文亂碼的幾種方式

一 對tomcat home conf server.xml檔案進行配置 本機的完整目錄為d users administrator tomcat apache tomcat 7.0.54 conf server.xml 核心 如下 其中最後一句是自己加的 這種方式一般不建議使用,因為它修改的是to...