2012-01-16 76 views
0

我在UTF-8的字符串(根據.encoding.name & .valid_encoding?),而且在它的轉義Unicode字符(\ u009A)紅寶石1.9.2的Unicode - Unicode的轉義字符被丟棄

「Hammarskj \ u009Ald」

這應該打印爲「Hammarskjšld」,但它只是滴下字形。 EG:

puts "Hammarskj\u009Ald" 
p "Hammarskj\u009Ald" 

結果的文本:

Hammarskjld 
"Hammarskj\u009Ald" 

它還(如果我保存在數據庫中的數據)時,其保存和丟棄。我搜索了一段時間,但我無法弄清楚如何忽略它(這是我認爲我需要做的)。很多信息都是1.8.7,而1.9.2的一些信息並不是我所需要的。

任何人有任何想法如何做我想要的?我似乎有一個有效的UTF-8字符串,我想要做的就是保存在數據庫中(完好無損),但它總是丟棄轉義的unicode。

+1

\ u009A在Unicode中不是「š」,9A在Windows-1252中是「š」。 Unicode「š」是\ u016​​1。有人向你說謊,如果他們聲稱使用Unicode。 – 2012-01-16 06:04:31

+0

http://www.fileformat.info/info/unicode/char/9a/index.htm這是另有說明。 – Paul 2012-01-16 07:08:58

+2

@Paul,fileformat.info網站由於其頁面生成方式而導致某些字符的圖像有誤。在這種情況下,圖像顯示「š」,但名稱顯示爲「」,分類顯示爲「其他,控制[Cc]」。因此,它是控制字符,而不是可見字符。數據中還有其他的東西可能是錯誤的(錯誤的代碼轉換?):名字「Hammarskjšld」沒有意義,它顯然應該是「Hammarskjöld」(U + 00F6作爲倒數第三個字母)。 – 2012-01-16 07:43:28

回答

0

你確定它已被丟棄,而不是不顯示?也許這只是你的字體在代碼點中有一個不顯示零寬度字符的問題。

當您將其從數據庫中取出並且p已編輯或inspect已編輯時,如果您看到轉義字符,則表示它已存在,未放棄。這是你打印出來的問題。

+0

它在OSX終端中具有字體。我在那裏看到了UTF-8字符。但它也沒有顯示在數據庫中(轉義),字符只是被丟棄。我已經拿出來檢查了,它實際上沒有了。 – Paul 2012-01-16 05:44:12