ste*_*ang 3 ruby encoding erb utf-8
我有一个用utf-8编码存储的数据文件,我想将数据嵌入到erb模板中.数据文件在顶部用utf-8显式编码.但是在运行erb引擎但我遇到Encoding::CompatibilityError错误.
我认为Ruby中的默认编码是ASCII,erb模板也必须在ascii下编码.我明确地将它改为utf-8但没有好处.
这是数据文件:
# coding: utf-8
samples: [
{ name: '??', city: '??' }
]
Run Code Online (Sandbox Code Playgroud)
这是Erb模板:
<% # -*- coding: UTF-8 -*- %>
#...
<p><%= samples[:name] %></p>
Run Code Online (Sandbox Code Playgroud)
(我决定写不同的答案)
我认为有两个问题.
erb库知道魔术注释中的编码规范,但是数据文件部分,你需要自己照顾.因此,当您读取文件时,您必须指定编码,或预先指定默认编码.
在输出时,您需要指定输出的编码.您可以根据I/O通道指定.
要指定默认编码(最简单),您可以:
Encoding.default_external = "UTF-8"
Run Code Online (Sandbox Code Playgroud)
将UTF-8用于所有I/O.