插入MySQL數據庫時在Ruby中,我有一大堆的UTF-8編碼字符串,例如:「HEC蒙特婁\ u00e9al」。的Unicode格式失去了紅寶石1.8.7
當我將其插入使用「mysql的」寶石我的MySQL表(格式爲utf8_general_ci),反斜槓被刪除。是什麼賦予了 :) ?你們中的任何人都知道這裏發生了什麼?
編輯:
例如字符串:
,並在數據庫中插入後:
HEC Montru00e9al
插入MySQL數據庫時在Ruby中,我有一大堆的UTF-8編碼字符串,例如:「HEC蒙特婁\ u00e9al」。的Unicode格式失去了紅寶石1.8.7
當我將其插入使用「mysql的」寶石我的MySQL表(格式爲utf8_general_ci),反斜槓被刪除。是什麼賦予了 :) ?你們中的任何人都知道這裏發生了什麼?
編輯:
例如字符串:
,並在數據庫中插入後:
HEC Montru00e9al
這不是UTF:
'HEC Montr\u00e9al'
這是一個JSON編碼的Unicode字符串的ASCII表示。如果是UTF-8,它看起來像:
'HEC Montréal'
你不能正確解碼某處你JSON輸入或您的客戶端代碼發送服務器的JSON當你的服務器要求純文本。
首先,你需要弄清楚爲什麼你得到JSON編碼字符串,當你不希望他們或弄清楚爲什麼你不能正確解碼的JSON。然後你可以看到數據庫是否正在損壞你的UTF-8。
我相信你必須明確地告訴MySQL的寶石期待UTF8。事情是這樣的:
db = Mysql.init
db.options(Mysql::SET_CHARSET_NAME, 'utf8')
db.real_connect(...
我正在以相反的順序(連接數據庫,設置字符集)。試試你的方法吧! – abcde123483
沒有運氣兩種方式:/ – abcde123483
謝謝我會嘗試找出爲什麼我得到JSON編碼字符串 – abcde123483
確定你是完全正確。感謝一百萬次指出這一點! – abcde123483
@ulvund:不用擔心,我知道更多關於隧道視野「它不可能是」,並尋找正確的錯誤比我想考慮一下:) –