如何在 MySQL 中存储 unicode?
Posted
技术标签:
【中文标题】如何在 MySQL 中存储 unicode?【英文标题】:How to store unicode in MySQL? 【发布时间】:2011-03-20 17:29:05 【问题描述】:如何在免费版 mysql 中存储 Unicode?
似乎没有 SQL Server 中的 nvarchar
类型。 MySQL 不支持 Unicode 吗?我尝试使用text
,但这也不起作用。
【问题讨论】:
【参考方案1】:您需要为您的表格选择一个utf8_*
字符集。文本和备注字段将自动以 UTF-8 存储。 mySQL 6 即将支持 UTF-16。
【讨论】:
更新:自 5.5 版起引入 UTF-16 和 Emoji (utf8mb4) 支持:dev.mysql.com/doc/refman/5.5/en/charset-unicode.html 值得注意的是,根据您从数据库中检索数据的方式,可能还需要明确地让连接也使用 UTF-8。【参考方案2】:给定字符串列(CHAR
、VARCHAR
或*TEXT
)的字符集由其character set and/or collation 确定。这是一个非常激烈的话题,所以最好阅读我链接的文档。例如:
CREATE TABLE t1
(
col1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_unicode_ci
)
将创建一个带有col1
的表t1
,以UTF-8 编码存储其内容。
【讨论】:
很好的解释和例子。谢谢@Stefan Gehrig 这个例子真的很有帮助。谢谢斯特凡 :-)【参考方案3】:您是否尝试在连接后设置名称?尝试存储 unicode 字符的结果是什么?连接到 mysql 服务器并输入:
SET NAMES UTF8;
这应该打开对 utf8 的“支持”。然后尝试存储 utf 数据。
【讨论】:
【参考方案4】:使用这个查询
alter table `DBNAME`.`TblName` Engine=InnoDB checksum=1 comment='' delay_key_write=1 row_format=dynamic charset=utf8 collate=utf8_unicode_ci
【讨论】:
“使用这个查询”没有解释是一个错误的答案。【参考方案5】:我遵循自己的编码风格,所以在跟随我的领导时请考虑到这一点。
首先我创建了 MySql 数据库。
创建数据库后,在mysql命令提示符下输入命令:
SET NAMES = UTF8;
存储 unicode 的表和列将使用排序规则属性设置为 utf8-utf_general_ci。每一列要存储 unicode,都将被选中并将 collation 属性设置为 utf8-utf_general_ci。
现在在 C# 中。
我的连接字符串像往常一样设置,但添加了一个这样的属性:
constring = @"SERVER=localhost;" + @"PORT=3306;" + @"DATABASE=gayakidb;" + @"UID=root;" + @"PASSWORD=mysql;" + @"charset=utf8;";
接下来,在系统操作系统的“显示语言设置”中安装 unicode 字体。或者,您可以将字体文件(真类型文件)复制粘贴到操作系统的Fonts文件夹中。
然后我在属性页中设置文本框对象或任何其他工具对象的字体属性。
此外,如果您需要使用键盘输入 unicode 字体,则需要为键盘布局安装 unicode 语言。这可以使用操作系统的区域语言设置选项来完成。
完成。通过这些设置,我编写了用于保存数据的模块,并且在运行 ocde 时,它成功完成了工作。
【讨论】:
【参考方案6】: MySQL supports UTF-8。 使用 varchar 并为列设置编码(在 phpMyAdmin 中非常简单)http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html - 我想这对你有帮助
【讨论】:
以上是关于如何在 MySQL 中存储 unicode?的主要内容,如果未能解决你的问题,请参考以下文章