MySQL中文拼音编码问题

Posted

技术标签:

【中文标题】MySQL中文拼音编码问题【英文标题】:MySQL Chinese pinyin encoding issue 【发布时间】:2011-11-05 08:06:50 【问题描述】:

我有一个 mysql 数据库设置为 utf8。我的字符集/排序规则变量是:

变量名 | 价值

character_set_client | utf8

character_set_connection | utf8

character_set_database | utf8

character_set_filesystem |二进制

character_set_results | utf8

character_set_server |拉丁语1

character_set_system | utf8

collat​​ion_connection | utf8_general_ci

collat​​ion_database | utf8_general_ci

collat​​ion_server | latin1_swedish_ci

我有一个网页,显示来自我们的 MySQL 数据库的汉字和拼音。汉字显示正常,但拼音是乱码。例如,

显示:NánjÄ«ng 正确:南京

现在,我检查页面编码并将其设置为 UTF8。我在 php 中呼应了 Nánjīng,它显示得很好。我在命令行中检查了数据,它在数据库中是正确的。但是,每当它通过查询时,它会混淆拼音,而不是汉字。有人知道为什么会这样吗?

【问题讨论】:

汉字有没有可能是UTF-8而拼音不是?您需要验证每个表的字符集。 相关问题,fixing column encoding in MySQL @Steve-o 感谢您的链接!这使我走上了正确的道路。我发布了我为修复它所做的工作。 NánjÄ«ng 是 Mojibake;请参阅***.com/questions/38363566/… 了解可能的原因。 【参考方案1】:

我想通了。这是一个整理问题。我修改了 cnf 将 collat​​ion_server 变量设置为 utf8_general_ci,然后重新导入了我的数据,它工作正常......我不知道为什么我之前没有想到。

【讨论】:

【参考方案2】:

如果你想在mysql数据库中存储拼音,你必须通过base64_encode();对其进行编码,并且在显示时你必须通过base64_decode(); 最重要的之一,你必须在页面顶部使用 header('Content-Type: text/html; charset=utf8 general ci');

【讨论】:

以上是关于MySQL中文拼音编码问题的主要内容,如果未能解决你的问题,请参考以下文章

Mysql按汉语拼音首字母查询数据

MySQL中文排序

mysql 中英文如何排序

MYSQL 中英文排序,中文根据拼音排序

java怎么根据汉字获取字的拼音首字母

C# 汉字转拼音 将中文转换成拼音