您的位置:首页 > 数据库 > MySQL

[error handle][mysql]mysql汉字乱码

2015-09-20 11:10 543 查看

REASON1

mysql默认编码都是latin1,察看方式:

mysql> SHOW VARIABLES LIKE ”character_set_%”;

+————————–+—————————-+

| Variable_name | Value |

+————————–+—————————-+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | binary |

| character_sets_dir | D:\Program Files\mysql-5.6.24-winx64\share\charsets\ |

+————————–+—————————-+

7 rows in set (0.00 sec)

ERROR1

此时通过Navicat插入汉字,一保存就会显示成乱码。

FIND1

上网查了下资料,主要是:

/article/9195155.html

注意,如果某个表有些字段在latin下编辑过了,更改表和数据库的编码后,进行汉字编辑还是乱码。

那是因为这个表的这些字段的编码还是latin1,输入命令进行察看就知道了。

HANDLE1

运行:SET NAMES “UTF8”; (好像是,记不清了)

它的作用相当于:

SET character_set_client = utf8;

SET character_set_results = utf8;

SET character_set_connection = utf8;

通过Navicat插入汉字显示正常。

REASON2

此时

+————————–+—————————-+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_results | utf8 |

| character_set_server | latin1 |

| character_set_system | binary |

| character_sets_dir | D:\Program Files\mysql-5.6.24-winx64\share\charsets\ |

+————————–+—————————-+

ERROR2

通过java代码向表中插入汉字,还是俩问号。url结尾加上?useUnicode=true&characterset=utf-8也是。

FIND2

既然只有character_set_server这个漏网之鱼,那估计就是它喽,想要更改它还挺麻烦。

网上的三个方法:

1、SET character_set_server = utf8;

对其他项貌似有用,但对它没用,改完后重启mysql立刻恢复原状。

2、有教程说可以运行设置向导,位置在X:\%path%\MySQL\MySQL Server 5.0\bin\MySQLInstanceConfig.exe

我这个版本的mysql相应目录就没有这个文件。好像高版本的这个文件被取消了。

3、更改mysql根目录下的my.ini,添加一行character_set_server = utf8,重启mysql

亲测可用

HANDLE2

更改后,插入汉字,一切正常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: