在一個數據庫中,我將不得不姓名及在UTF8和散列存儲在latin1_bin。我打電話給SET NAMES utf8
,但我注意到,當我試圖閱讀它們(我能夠寫得很好)時,它破壞了latin1字段。這是奇怪的,因爲如果我理解正確的查詢是隻有約發送數據到服務器,而不是接收它。混合UTF8和latin1_bin領域與PHP
phpMyAdmin也顯示損壞的數據。
關於我可能會做錯什麼的線索?
(使用MAMP 1.9.6)
編輯:this答案指定這也是用於將數據發送回客戶端的字符集。我感到困惑:指定字符集的字符集有什麼意義?
編輯: 從列定義中摘錄:從查詢
`tok` char(64) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
`sal` char(16) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
...
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_roman_ci ;
摘錄:
SELECT tok,sal FROM user WHERE id=4 LIMIT 1
。
INSERT INTO user (tok, sal) VALUES (x'1387ea0c22277d3000bd23241c357e3a9ba45a2e28f50581d63a73bf785a7458a95cca4de27d0a86588f5bdfa94415d6a255c2c0379ebc2f00dacba03ae6b866', x'8fca28a592c29f245ff0a3ba5f97420c')
如何在您的哈希列定義,什麼你的讀/寫的查詢是什麼樣子? – Jon
@Jon:使用列和查詢摘錄進行更新 –
在閱讀時如何處理傳入值?這應該工作:'echo bin2hex(iconv(「UTF-8」,「ISO-8859-1」,$ sal))'。 – Jon