2014-11-06 97 views
2

我有一個elasticsearch settings.yml文件中,需要inlcude此:Ruby的YAML無法讀取的unicode

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

紅寶石拋出一個錯誤,並且是非常不滿的:

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

哪有我解決了這個問題?

謝謝!

回答

2

我用廣泛的unicode山藥,它工作得很好。 這是我用來加載一個UTF-8編碼的文件:

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

這裏的時候,紅寶石試圖解析\x{670}

\x是紅寶石字符串中的轉義序列,你有一個錯誤。它用於表示具有兩位十六進制數字的字節。

因此,\x後跟{是無效的,這就是爲什麼ruby會拋出錯誤。

工作示例是\x67相當於g

我覺得一個很好的問題要問自己是爲什麼你在你的字符串的花括號?在yaml文件中編碼之前的初始字符串是什麼。

+0

錯誤仍然存​​在 – 2014-11-06 08:59:31

+0

這是引起不快樂的引號 – 2014-11-06 09:00:01

+0

我改進了我的答案以解釋錯誤 – 2014-11-06 09:10:07