2017-09-25 33 views
0

我想將一些utf8編碼數據插入到mysql數據庫中。特殊字符在瀏覽器中正確顯示,但不在我的數據庫中。手動將排序規則更改爲utf8_unicode_ci並確認「此操作將嘗試將數據轉換爲新排序規則」後,數據將正確顯示。但是,如果我創建使用SQL排序規則不起作用

CREATE TABLE IF NOT EXISTS table_name (
    date date NOT NULL, 
    searchengine VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    location VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    keyword VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    position INT NOT NULL, 
    competition VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    url VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL  
) 

表,並在創建表後插入數據,該數據仍無法正常顯示,即使是總彙utf8_unicode_ci。有想法該怎麼解決這個嗎?

+0

您尚未提供足夠的信息來回答 - 您是否收到問號?胡言亂語?截斷文本?什麼?在任何情況下,看到這個解決您的問題:http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-store –

回答

1

A 排序規則是一組定義如何比較和排序字符串的規則。 MySQL中的每個排序規則都屬於一個字符集。每個字符集都至少有一個排序規則,並且大多數都有兩個或更多排序規則。排序規則會根據權重對字符進行排序。

utf8mb4_unicode_ci基於Unicode的排序和比較標準,可以在各種語言中進行精確排序。

+0

手動設置在插入數據後,在phpmyadmin中將utf8mb4_unicode_ci整理爲正常工作。數據得到正確轉換。但是,如上面所示的代碼創建表時,將排序規則設置爲utf8mb4_unicode_ci,然後插入數據不起作用。數據不會被轉換。 – erlDan

+0

https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-conversion.html –

+0

我想你需要使用utf8而不是utf8mb4。請檢查上述評論中的鏈接。 –