在 MySQL 表中存储英文和中文字符的正确字符集是啥?

Posted

技术标签:

【中文标题】在 MySQL 表中存储英文和中文字符的正确字符集是啥?【英文标题】:What is the correct character set for storing English and Chinese characters in a MySQL table?在 MySQL 表中存储英文和中文字符的正确字符集是什么? 【发布时间】:2012-03-30 08:17:29 【问题描述】:

我正在尝试将英文和中文存储在一个 mysql 表中的不同字段中。

lang1 为英文,lang2 为中文。

我为表格字符集尝试了 UTF8_general_ci 和 UTF8_unicode_ci。

用于输入的 html 页面也使用 UTF8。但是由于某种原因,汉字又回来了???。任何人都知道为什么会发生这种情况?我从UTF8 page as well复制并粘贴了汉字。

编辑: 输入页面的请求标头:

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

页面本身设置:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

编辑: 看起来在将字段 lang2 设置为 utf8_general_ci 后,它正在正确存储字符。我将表和数据库排序规则设置为 utf8,但错过了特定字段。

【问题讨论】:

用于检索数据的数据库连接是否也设置为utf-8? @MikePurcell 我不确定,现在我会检查一下,谢谢! @MikePurcell 我的数据库配置设置为使用“utf8”。 这可能无法保证用于检索数据的连接支持 utf-8,您需要发出SET NAMES 'UTF8' 查询以确保。 @MikePurcell 我会试试的,谢谢! 【参考方案1】:

这里是mysql中文字符集的简要说明。

http://www.haidongji.com/2007/10/04/character-set-and-collation-for-simplified-chinese-mysql/

http://dev.mysql.com/doc/refman/5.1/en/faqs-cjk.html#qandaitem-B-11-1-3

http://www.dodoskido.com/archives/003040-mysql-chinese-character-fix-or-how-to-make-utf8-work-for-you-pages.html

【讨论】:

【参考方案2】:

这里是中文日文韩文的mysql字符集

+--------------------+---------------------------+
| CHARACTER_SET_NAME | DESCRIPTION               |
+--------------------+---------------------------+
| big5               | Big5 Traditional Chinese  |
| cp932              | SJIS for Windows Japanese |
| eucjpms            | UJIS for Windows Japanese |
| euckr              | EUC-KR Korean             |
| gb2312             | GB2312 Simplified Chinese |
| gbk                | GBK Simplified Chinese    |
| sjis               | Shift-JIS Japanese        |
| ujis               | EUC-JP Japanese           |
+--------------------+---------------------------+

如果您使用 UTF-8,请确保这是您的页面传递给数据库的字符集。然后你可以将 htmlentities() 设置为 utf8_encode() 所以一切都在说同一种语言。

您也可以尝试将存储中文数据的字段设置为二进制的修复方法,如本文http://www.dodoskido.com/archives/003040-mysql-chinese-character-fix-or-how-to-make-utf8-work-for-you-pages.html所示

【讨论】:

以上是关于在 MySQL 表中存储英文和中文字符的正确字符集是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中存储特殊字符

在 MySQL 中存储 emoji 得到不正确的字符串值错误

不正确的字符串值:'\xF0\x9F\x8E\xB6\xF0\x9F...' MySQL

使用 Windows 资源管理器获取要存储在表中的文件的路径(字符串)

如何在 MySQL 数据库中存储 JSON 字符串

如何在 segues 之间拆分、子字符串和排序字符串,使其正确显示在我的表中?