【问题标题】:Ruby yaml cannot read unicodeRuby yaml 无法读取 unicode
【发布时间】:2014-11-06 08:52:38
【问题描述】:

我有一个用于 elasticsearch 的 settings.yml 文件,需要包含以下内容:

char_filter:
           arabic_normalization_extra:
               type: mapping
               mappings: [ "\x{670}=>ا", "ٰ=>ا", "ٱ=>ا", "آ=>ا", "ٖ=>ا" ]

Ruby 抛出一个错误,对此非常不满:

Psych::SyntaxError: (<unknown>): did not find expected hexdecimal number while parsing a quoted scalar at line 9 column 28

我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    我在 unicode 中广泛使用了 yam,它运行良好。 这是我用来加载 utf-8 编码文件的方法:

    YAML::load(File.open(filepath, 'r:utf-8'))
    

    Ruby 尝试解析 \x{670} 时出现错误

    \x 是 ruby​​ 字符串中的转义序列。用于用两位十六进制数表示一个字节。

    所以 \x 后跟 { 是无效的,这就是 ruby​​ 抛出错误的原因。

    一个工作示例是\x67,它对应于g

    我想问自己一个很好的问题是为什么你的字符串中有这些花括号?以及在 yaml 文件中编码之前的初始字符串是什么。

    【讨论】:

    • 引文不开心
    猜你喜欢
    • 2021-10-23
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多