我們在服務器2003上運行一箇舊的5.1 Mysql服務器。最近我們轉移到一個更新的環境,使用Mysql 5.6和server 2008.現在,插入特殊字符如'Ã'時,我們不斷收到錯誤。錯誤的字符串值:' xC2 x9Fe 10 ...'列
現在我已檢查了源編碼,它是UTF-8。但舊的Mysql服務器被配置爲拉丁文1(服務器/表/殖民地)與整理latin_swedish_ci,我們沒有收到舊環境的任何錯誤。
現在我已經做了一些測試,因爲我們沒有生活在新的環境。我曾嘗試將所有表設置爲表/殖民地以及latin1。在這兩種情況下,我都會收到這些錯誤。
我注意到,在舊服務器上,服務器默認char-set是latin1,在新服務器上是utf-8。這可能是問題嗎?我覺得這很奇怪,因爲源代碼是utf-8。
是否有一些選項可以處理這個可以在舊環境中打開的選項?我不確定這樣的事情是否存在。我沒有比較mysql管理工具中的設置,除了默認的字符集外,它看起來是一樣的。
編輯:
SHOW VARIABLES LIKE '%炭';
舊服務器:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8 | *
| character_set_connection | utf8 | *
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 | *
| character_set_server | latin1 |
| character_set_system | utf8 |
新服務器:
+--------------------------+-----------------------------------------------+
| Variable_name | Value |
+--------------------------+-----------------------------------------------+
| character_set_client | utf8mb4 | *
| character_set_connection | utf8mb4 | *
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 | *
| character_set_server | utf8 |
| character_set_system | utf8 |
據我從MySQL網站utf8mb4文章在明白的是一個超級組合utf8這不應該造成編碼問題,我認爲,因爲它們在編碼上基本相同嗎?
是的,utf8mb4比utf8更好。不過,還是需要在整個MySQL中保持一致。 'Ã'的背景是什麼? 「C29Fe」?那裏可能有更多的線索。 (仍然'Ã'在兩個字符集中都是有效的,C29F(我認爲)兩者都是無效的。) –