数据库教程:MySQL的中文UTF8乱码问题分享

从MySQL支持Unicode后,为了与时俱进,我们的web程序也开始考虑用UTF8了。其实UTF8也用了好几年了,程序基本能跑,没什么大问题,但是数据倒换的时候,总是遇到不爽的事情。

【问题现象】

网页xxx.php用EditPlus另存为UTF8格式,MySQL在my.ini里设置default-character-set=utf8,建表时加了CREATETABLE`xxx`(mynamevarchar(255))ENGINE=MyISAMDEFAULTCHARSET=utf8,用xxx.php执行insert/update/select出来的都是中文,貌似没问题,但是用phpMyAdmin看select是乱码,用第三方工具软件(如SQLyog)看select也是乱码,mysqldump也是乱码,很不爽。当然,如果你建表的时候,选择了binary/varbinary/blob类型,不会发现乱码,因为指定的是二进制保存,MySQL保存数据时就没有编码的概念了。

【查找问题】

虽然在my.ini里设置default-character-set=utf8,但是执行以下命令时有新发现:

mysql>SHOWVARIABLESLIKE’character%’;

+—————————————-+————————-

|Variable_name           |Value

+—————————————-+————————-

|character_set_client       |latin1

|character_set_connection  |latin1

|character_set_database    |utf8

|character_set_filesystem   |binary

|character_set_results      |latin1

|character_set_server      |utf8

|character_set_system     |utf8

|character_sets_dir        |D:mysqlsharecharsets

+—————————————-+————————-

8rowsinset(0.00sec)

 

mysql>SHOWVARIABLESLIKE’collation_%’;

+—————————————+——————

|Variable_name          |Value           

+—————————————+——————

|collation_connection    |latin1_swedish_ci

|collation_database      |utf8_general_ci 

|collation_server        |utf8_general_ci 

+————————————–+——————

3rowsinset(0.00sec)

发现Value列里面不全是utf8,仍然有部分是latin1,比如其中的client和connection。那网页xxx.php的工作过程就是这样的啦:从xxx.php页面上输入汉字,因为xxx.php是UTF8编码的,所以xxx.php以UTF8格式转换输入的汉字,然后以UTF8提交给mysql,但是mysql的client和connection都是latin1的,而表是UTF8的,所以mysql存储时,先将xxx.php提交的汉字,转成latin1的格式,再转成UTF8字符格式存在表中。如果此时我们用第三方软件或者phpMyAdmin去select查看此表,而表中存储的数据是被latin1过的UTF8字符,出来的时候是以UTF8格式取的,当然看起来时乱码了。解决方法就是让所有过程都是UTF8的就可以了。

【解决问题】

1、从my.ini下手

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

[mysqld]

default-character-set=utf8

上述就是数据库技术:MySQL的中文UTF8乱码问题分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/910074.html

(0)
上一篇 2021年10月23日
下一篇 2021年10月23日

精彩推荐