2015-02-09 103 views
0

我正嘗試使用排序規則utf8_unicode_ci將我的數據庫中的表中的特定列從拉丁文字符集latin1_swedish_ci轉換爲utf8。將Latin1的SQL轉換列轉換爲UTF8

COLUMN:說明,類型:LONGTEXT,默認非空

我試圖在列下面的命令:

ALTER TABLE sample MODIFY description LONGBLOB NOT NULL ; 

ALTER TABLE sample MODIFY description LONGTEXT CHARACTER SET utf8 NOT NULL COLLATE utf8_unicode_ci; 

我還試圖改變編碼而不改變第一至二值。但是這些字符最終被服務器錯誤地重新編碼。

而且不斷收到關於某些字符的錯誤:

錯誤代碼:1366不正確的字符串值: '\ x92t HAV ...' 列 'LONGDESC' 在行803

似乎我的表格中的某些字符沒有正確轉換。

我該如何解決這個問題?

+1

***什麼***數據庫?? – 2015-02-10 06:01:51

+0

我正在使用mysql – 2015-02-10 22:44:03

回答

1

\ x92意味着您在表現在有中的latin1。第二個ALTER是,聲稱這些字節是用utf8編碼的。因此,錯誤消息。

案例1:您需要將LONGTEXT更改爲utf8,因爲您打算添加無法用latin1編碼的文本的行。

對於這種情況,ALTER TABLE sample CONVERT TO CHARACTER SET utf8; - 轉換表中的所有CHAR/TEXT列。

ALTER TABLE sample MODIFY description ... CHARACTER SET utf8; - 轉換一列。案例2:系統的其餘部分正在考慮utf8,並且被這一列所困惑。

嗯,我不認爲它是困惑。根據需要進行轉化。