2010-06-28 69 views

回答

2

Unicode是一個非常大的字符集,幾乎包括幾乎所有語言的所有字符。

有許多方法可以將Unicode文本存儲爲一個字節序列 - 這些方法被稱爲編碼。所有Unicode編碼(以及所有完整的Unicode編碼)可以將所有Unicode文本以某種格式存儲爲字節序列 - 但是任何給定文本所需的字節數將取決於所使用的編碼。

UTF-8是一種Unicode編碼,針對英文和其他語言進行了優化,這些編碼在拉丁字母之外使用很少的字符。 UTF-16是一種Unicode編碼,可能更適合於各種歐洲語言的文本。 Java和.NET將所有文本內存(String類)存儲爲UTF-16編碼的Unicode。

+0

完美,非常感謝。 – 2010-06-28 11:21:38

+0

如果您僅限於歐洲,在空間方面,UTF-8比UTF-16更好。只有西里爾的國家會使用許多多字節,而且它們在歐洲是少數。在所有其他國家,基本ASCII(<128)字符數量明顯多於「奇怪」字符。 (速度方面,UTF-16總是更有意義。)來源:我是來自非英語國家之一的語言學家。 – Amadan 2010-06-28 11:26:31

+0

此外,你在這裏拆分頭髮:對於大多數實際目的(包括,我強烈懷疑,OP的),字符集和字符編碼之間的區別是微不足道的。這個問題可能會被重新設置爲:在MySQL中爲「CHARACTER SET」選項放置什麼。如果你把'UTF8',MySQL會正確地認爲你的意思是Unicode集合,UTF-8編碼。 – Amadan 2010-06-28 11:30:30

5

字符集,毫無疑問,UTF-8。整理,我不知道有一個很好的答案,但你可能想要閱讀this report

+0

大,但我會讀它:)謝謝你。我相信unicode對於性能非常好,但是當你面對不同的角色時,這不是優先考慮的。 – 2010-06-28 11:07:15

+1

我要說什麼。還有用:http://forums.mysql.com/read.php?103,187048,188748#msg-188748 – 2010-06-28 11:08:48

+2

排序規則控制如何對特殊字符進行排序和搜索處理,例如無論它們是「正常化」('E'>'E')還是被視爲單獨的實體。 – 2010-06-28 11:10:17

相關問題