我有一个使用 utf-8 编码存储的数据文件,我想将数据嵌入到 erb
模板中。数据文件在顶部使用 utf-8 显式编码。但是在运行 erb 引擎时,我遇到了 Encoding::CompatibilityError
错误。
我认为 Ruby 中的默认编码是 ASCII,erb 模板也必须在 ascii 下编码。我已明确将其更改为 utf-8,但没有任何好处。
这是数据文件:
# coding: utf-8
samples: [
{ name: '北京', city: '北京' }
]
这是 Erb 模板:
<% # -*- coding: UTF-8 -*- %>
#...
<p><%= samples[:name] %></p>
最佳答案
(我决定写不同的答案)
我认为有两个问题。
- 输入数据文件编码
- 你是如何输出的
erb库知道magic comments中的编码规范,但是data file部分,需要自己注意。所以,当你读取文件时,你必须指定编码,或者预先指定默认编码。
在输出时,您需要指定输出的编码。您可以指定每个 I/O channel 的基础。
要指定默认编码(最简单),您可以:
Encoding.default_external = "UTF-8"
对所有 I/O 使用 UTF-8。
关于ruby - 如何在erb模板中使用utf-8编码的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9695662/