2011-05-04 26 views
0

IM嘗試改變柱爲utf8,但它不effectit,保持它顯示我UTF8字符的問號,這是我運行查詢:阿爾特字符列設置uf8不會影響它

alter table MY_TABLE change MY_COLUMN MY_COLUMN varchar(510) character set utf8; 

它只工作,如果我把整個表改爲utf8 insted latin1,但我試圖做的是保持表爲拉丁文1和列utf8。任何想法爲什麼該查詢不會對列產生影響?

+0

最好指定你正在使用的數據庫後端,當然這不是t-sql代碼。 – HLGEM 2011-05-04 18:43:08

回答

0

混合字符集幾乎不是一個好主意。我建議任一:

  • 保持整個表作爲latin1的,改變柱爲二進制數據類型像BLOB,然後使用/從柱插入數據原樣。

OR

  • 整個項目轉換爲UTF8。

編輯:

有些是不混合字符集是個好主意的原因是這樣的:

  • 說你是在一個字符串連接功能結合領域。 DBMS很可能會對使用什麼字符集感到困惑,並可能會嘗試將UTF8轉換爲Latin1,以達到量子效應。

  • 如果您UNIONED帶有utf8的非utf8字段,那麼DBMS可能會對如何解釋文本感到困惑。排序會意外地工作,因爲UTF8多字節字符以可打印的latin1字符集範圍之外的字節開始。例如:如果你有元組(「d」,「é」,「f」)[注意e上的重音符號],如果它們符合(「d」,「f」,「é」),解釋爲latin1字符串。

+0

你能解釋一下嗎,你知道爲什麼它不影響列,爲什麼它不是一個好主意? – Jimmy 2011-05-04 16:54:13