文件中的Unicodes被转义

时间:2014-08-09 16:20:18

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我有一个模型Person当我通过控制台通过控制台保存一个新人时,例如:

p = Person.new
p.name = "Hans"
p.street = "Jo\u00DFstreet"
p.save

它会在p.street Joßstreet上返回正确的内容。但是当我尝试从种子文件中构建时:

file.txt的

Hans;Jo\u00DFstreet
Jospeh;Baiuvarenstreet

并在我的种子中运行:

File.readlines('file.txt').each do |line|
  f = line.split(';')
  p = Person.new
  p.name = p[0]
  p.street = p[1]
  p.save
end

现在,当我打电话给:p = Person.last时,我得到p.street => "Jo\\u00DFstreet"

我不明白为什么\u00DF会被逃脱!我该怎么做才能解决这个问题?感谢

1 个答案:

答案 0 :(得分:1)

因为转义序列如\ u00DF仅在源代码字符串文字中处理,作为Ruby语法的一部分。

当您读取某个文件(或从其他地方接收数据)时,Ruby不会尝试处理转义序列,您应该使用自己的代码来完成。

要使用unescape字符串,您可以使用herethere所述的方法,但也许您最好将未转义的文字存储在您的文件中。