2010-07-25 83 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