我已經得到了的二手一堆使用大量不同的Ruby解釋器的人gem,它包括什麼歸結爲以下代碼:處理字符串編碼與紅寶石1.8相同的代碼和1.9
res = RestClient.post(...)
doc = REXML::Document.new(res).root
res
的內容始終是UTF-8,並且在Ruby 1.8中可以正常工作,但如果響應不是純ASCII 和,則用戶的默認編碼不是UTF-8,但在Ruby 1.9下會出現此錯誤。現在
,如果我要拍關於Ruby 1.9獨自這項工作,我只是堅持res.force_encoding('utf-8')
在那裏,並用它來完成,但該方法是1.9只,然後紅寶石1.8下突破:
NoMethodError: undefined method `force_encoding' for #<String:0x101318178>
最好的解決方案能想出是這樣的,這迫使系統範圍的默認編碼爲UTF-8:
Encoding.default_external = 'UTF-8' if defined? Encoding
更好的想法,或者這是因爲它得到好處呢?對試圖使用不同編碼的圖書館用戶是否會產生負面影響?
爲了澄清,我可以依靠傳入的內容總是有效的UTF-8。 Ruby 1中的問題。9是String'res'標記了用戶的默認編碼,該編碼可能不是UTF-8,這會導致REXML陷入困境。 – jpatokal 2011-03-29 02:35:26