2011-09-03 61 views
1

插入MySQL數據庫時在Ruby中,我有一大堆的UTF-8編碼字符串,例如:「HEC蒙特婁\ u00e9al」。的Unicode格式失去了紅寶石1.8.7

當我將其插入使用「mysql的」寶石我的MySQL表(格式爲utf8_general_ci),反斜槓被刪除。是什麼賦予了 :) ?你們中的任何人都知道這裏發生了什麼?

編輯:

例如字符串:

​​

,並在數據庫中插入後:

HEC Montru00e9al 

回答

2

這不是UTF:

'HEC Montr\u00e9al' 

這是一個JSON編碼的Unicode字符串的ASCII表示。如果是UTF-8,它看起來像:

'HEC Montréal' 

你不能正確解碼某處你JSON輸入或您的客戶端代碼發送服務器的JSON當你的服務器要求純文本。

首先,你需要弄清楚爲什麼你得到JSON編碼字符串,當你不希望他們或弄清楚爲什麼你不能正確解碼的JSON。然後你可以看到數據庫是否正在損壞你的UTF-8。

+0

謝謝我會嘗試找出爲什麼我得到JSON編碼字符串 – abcde123483

+0

確定你是完全正確。感謝一百萬次指出這一點! – abcde123483

+1

@ulvund:不用擔心,我知道更多關於隧道視野「它不可能是」,並尋找正確的錯誤比我想考慮一下:) –

1

我相信你必須明確地告訴MySQL的寶石期待UTF8。事情是這樣的:

db = Mysql.init 
db.options(Mysql::SET_CHARSET_NAME, 'utf8') 
db.real_connect(... 
+0

我正在以相反的順序(連接數據庫,設置字符集)。試試你的方法吧! – abcde123483

+0

沒有運氣兩種方式:/ – abcde123483