从yaml文件中将rubling-pound放入ruby中的最简单方法

时间:2014-11-24 19:04:30

标签: ruby yaml

我有一个带有英镑符号的yaml文件 -

amount: "£50"

当我访问该符号时,它返回以下内容:

"£50"

我正在使用hashie:mash加载并访问我的yaml ...欢迎提出想法,在网站上找不到任何可以提供直接解决方案的内容(或者至少有一个适合我的方式)

1 个答案:

答案 0 :(得分:1)

外部编码是你的问题; Ruby假设从外部文件读取的任何数据都是CP-850,而不是UTF-8。

您可以通过以下几种方式解决此问题:

  1. 设置Encoding.default_external ='utf-8'。这将告诉Ruby默认将文件读取为UTF-8。
  2. 通过open('file.yml', 'r:utf-8')
  3. 将您的文件明确读取为UTF-8
  4. 在将字符串传递给YAML解析器之前将其转换为UTF-8:
  5. 你可以通过String#force_encoding来做到这一点,它告诉Ruby用不同的编码重新解释原始字节:

     text = open("file.yml").read
     text.force_encoding("utf-8")
     YAML.load text