用俄语和波兰语符号写在红宝石中的文件

时间:2013-10-04 21:43:43

标签: ruby encoding streamwriter

我需要向html文件写一些数据,这些数据可能是非英语的,现在是我的代码:

File.open('text2.html', 'wb') do |fo|
  fo.write body_text3
end

我也试试

File.open('text2.html', 'wb') do |fo|
  fo.write body_text3.encode('UTF-8')
end

但我收到错误:

  中的`encode':“\ xD0”从ASCII-8BIT到UTF-8   (编码:: UndefinedCon ...

我怎么能用俄文符号保存网页?

我还需要写什么,以便我可以用我的俄语页面与nokogiri一起操作?需要我做一些对话,或者只是#coding:在代码之上的utf-8就够了吗?

1 个答案:

答案 0 :(得分:4)

你能在下面试试吗?

File.open('text2.html', 'wb') do |fo|
  fo.write body_text3.force_encoding('ASCII-8BIT').encode('UTF-8')
end

以下是解释:

  

在这里,我们从 UTF-8 开始,然后我们让Ruby知道它实际上是 ASCII-8BIT 。它不是,所以只会导致垃圾。然后我们要求Ruby将这些编码重新编入 UTF-8

Yehuda Katz的好博客:Ruby 1.9 Encodings: A Primer and the Solution for Rails