2008-09-05 34 views
4

當嘗試將MySQL表從缺省的不區分大小寫的swedish或ascii字符集遷移到utf-8時,有沒有人有任何提示或竅門時刻要注意?我參與的一些項目正在努力實現更好的國際化,數據庫將成爲這一變化的重要組成部分。MySQL UTF/Unicode遷移技巧

在我們改變數據庫之前,我們要將每個站點轉換爲使用UTF-8字符編碼(從最不重要到最多),以確保所有輸入/輸出使用相同的字符集。

感謝所有幫助

回答

2

一些提示:

  • CHARVARCHAR列將最多使用3次以上的磁盤空間。 (您可能不會爲瑞典語單詞獲得太多磁盤空間。)
  • 在讀取或寫入數據庫之前使用SET NAMES utf8。如果你不這樣做,你會得到部分亂碼的字符。
1

我將要渡過了以下網站/物品,以幫助找到答案。

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!) - Joel on Software

UTF-8 And Unicode FAQ

Hanselminutes episode "Sorting out Internationalization with Michael Kaplan"

而且我也只是發現了一個很話題上通過後德雷克·錫弗斯@奧賴利ONLamp博客,因爲我在寫這一點。 Turning MySQL data in latin1 to utf8 utf-8

0

CHARVARCHAR列將最多使用3次以上的磁盤空間。

只有當它們塞滿了latin-1且序號> 128時。否則,增加的UTF-8空間使用量是最小的。

0

整理不總是有利的。您將得到與非修正版本相對應的清單,但這並不總是正確的。可能要去w/utf8_bin,但所有內容都區分大小寫。

1

請注意索引長度限制。如果一個表的結構,說:

一個varchar(255) b爲varchar(255) 鍵( 'A', 'B')

你會走過去的1000字節的限制上密鑰長度。 255 + 255沒問題,但255 * 3 + 255 * 3是不行的。