在 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 中存储 emoji 得到不正确的字符串值错误
不正确的字符串值:'\xF0\x9F\x8E\xB6\xF0\x9F...' MySQL