2010-07-25 81 views
28

如何在免費版的MySQL中存儲Unicode?如何在MySQL中存儲unicode?

在SQL Server中似乎沒有nvarchar類型。 MySQL不支持Unicode嗎?我嘗試使用text,但這也不起作用。

回答

21

你需要選擇一個utf8_*字符爲您的表中設置。文本和備註字段將自動存儲在UTF-8中。對於UTF-16載體中的MySQL 6.

+5

更新:UTF-16的表情符號(utf8mb4)支持自5.5版本介紹:http://dev.mysql.com/doc/refman/5.5/en/charset- unicode.html – Raptor 2014-12-29 04:24:48

+0

值得注意的是,根據您從數據庫中檢索數據的方式,也可能需要明確讓連接使用UTF-8。 – hugovdberg 2018-01-06 12:14:16

2

您是否嘗試過在連接後設置名稱?嘗試存儲unicode字符的結果是什麼?連接到mysql服務器並輸入:

SET NAMES UTF8; 

這應該對utf8打開「支持」。然後嘗試存儲utf數據。

14

來的字符集爲給定的字符串列(CHARVARCHAR*TEXT)是由它的character set and/or collation確定。這是一個相當激烈的話題,所以最好閱讀我鏈接的文檔。例如:

CREATE TABLE t1 
(
    col1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci 
) 

將創建一個表t1col1存儲其以UTF-8編碼的內容。

+0

很好的解釋和例子。謝謝。@ Stefan Gehrig – 2017-05-17 13:17:34

1

我遵循自己的編碼風格,所以請在我的領導下考慮這一點。

首先我創建了MySql數據庫。

創建數據庫,在MySQL命令提示後,得到命令:

SET NAMES = UTF8; 

表和列存儲Unicode是與覈對屬性作爲UTF8-utf_general_ci進行設置。要選擇每個存儲unicode的列,並將排序規則屬性設置爲utf8-utf_general_ci。

現在在C#中。

我的連接字符串設置像往常一樣,但是添加這樣一個屬性:

constring = @"SERVER=localhost;" + @"PORT=3306;" + @"DATABASE=gayakidb;" + @"UID=root;" + @"PASSWORD=mysql;" + @"charset=utf8;"; 

接下來,在你的系統OS的「顯示語言設置」安裝Unicode字體。或者,您可以將字體文件(真實類型文件)複製並粘貼到操作系統的字體文件夾中。

然後我設置屬性頁中的文本框對象或任何其他工具對象的字體屬性。

更重要的是,如果您需要使用鍵盤輸入unicode字體,則需要安裝用於鍵盤佈局的unicode語言。這可以使用操作系統的區域語言設置選項來完成。

完成。通過這些設置,我編寫了用於保存數據的模塊,並在運行ocde時成功完成了這項工作。

2

使用此查詢

alter table `DBNAME`.`TblName` Engine=InnoDB checksum=1 comment='' delay_key_write=1 row_format=dynamic charset=utf8 collate=utf8_unicode_ci 
+0

「使用此查詢」沒有解釋是一個不好的答案。 – Emiswelt 2017-12-26 23:04:10