哈希字符串编码不正确
我有一个定义了字符串键的简单常量哈希:
MY_CONSTANT_HASH = {
'key1' => 'value1'
}
现在,我注意到键上的 encoding.name
是 US-ASCII
。但是,Encoding.default_internal
预先设置为 UTF-8
。为什么它没有被正确编码?我稍后无法 force_encoding
,因为该对象在那时被冻结,所以我收到此错误:
can't edit freeze String
PS:我使用的是 ruby 1.9 .3p0(2011-10-30 修订版 33570)。
I have a simple constant hash with string keys defined:
MY_CONSTANT_HASH = {
'key1' => 'value1'
}
Now, I've noticed that encoding.name
on the key is US-ASCII
. However, Encoding.default_internal
is set to UTF-8
beforehand. Why is it not being properly encoded? I can't force_encoding
later, because the object is frozen at that point, so I get this error:
can't modify frozen String
P.S.: I'm using ruby 1.9.3p0 (2011-10-30 revision 33570).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
默认的 内部 和 external 编码针对 IO 操作:
您要做的最简单的事情就是添加
#encoding=utf-8
注释来告诉 Ruby 源文件是 UTF-8 编码的。例如,如果您运行此:作为独立的 Ruby 脚本,您将获得 UTF-8,但如果您运行此:
您可能会获得 US-ASCII。
The default internal and external encodings are aimed at IO operations:
The easiest thing for you to do is to add a
# encoding=utf-8
comment to tell Ruby that the source file is UTF-8 encoded. For example, if you run this:as a stand-alone Ruby script you'll get UTF-8, but if you run this:
you'll probably get US-ASCII.