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

时间:2012-03-13 21:19:32

标签: php mysql character-encoding

我试图将英文和中文存储在一个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,但错过了特定字段。

2 个答案:

答案 0 :(得分: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,请确保这是你的页面传递给数据库的charset。然后你可以将htmlentities()设置为utf8_encode(),所以一切都在说同一种语言。

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

所示

答案 1 :(得分:2)