ruby - 如何在erb模板中使用utf-8编码的数据

标签 ruby encoding utf-8 erb

我有一个使用 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/

相关文章:

php - 为什么我不能摆脱这个?

ruby - 什么是 Ruby 1.9 标准 CSV 库?

ruby-on-rails - 如何通过尚未保存的父关联访问 ActiveRecord 祖父关联?

python - 如何使用 HTML 实体将 Unicode 编码为 ASCII

PHP 数据库中的错误字符集

c++ - 在 libarchive 中设置 UTF-8 路径名 header

php - 在哪里可以获得英语的 UTF-8 字符的完整列表?

mysql - 如何在 MariaDB 10 中启用大索引?

具有奇怪值的 ruby​​ 数组

ruby - 我可以在 ruby​​ 中捕获 control-q 和 control-s 吗?