MySQL:中文编码遭遇问号困境(mysql中文变成问号)

近期,MySQL的中文编码出现了一个问号困境。有些人把参数值从网页POST等传输过来,但是收到的值会有不可预期的问号出现,而且当将它用MySQL存到数据库时也是同样的问号。

最开始,MySQL默认使用的latin1,会产生乱码。当时只能认为MySQL中文编码设置不正确。于是使用utf-8来试试,但是还是出现了问号。这一现象是由MySQL编码设置不健全造成的。

为了解决中文编码问号困境,首先要确保MySQL编码设置是正确的,因为只有正确的编码设置,才能使MySQL能够正确的存储和获取字符。MySQL命令行登录可以查看当前的编码设置,以及所有的表编码:

mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

如果上面的设置输出结果没有utf8,则使用命令将MySQL编码设置为utf8

mysql> SET NAMES utf8;

其次,如果参数的编码是其他字符编码,比如gb2312,可以先将参数编码转换为utf8

iconv -f gb2312 -t utf8 参数值 > utf8_after

最后,把utf8_after这个字符集文件改名为参数值,再将这个参数输入MySQL保存到数据库中。

总之,MySQL中文编码遭遇问号困境,但只要正确设置MySQL编码,并且将参数值转换为utf8,就能解决这个问题。


数据运维技术 » MySQL:中文编码遭遇问号困境(mysql中文变成问号)