您的位置:首页 > 运维架构 > Nginx

解决nginx_1.4+MySql_5.6 中文乱码(问号)问题

2016-03-04 20:45 323 查看
【问题背景】使用阿里云ESC,运行Aliyun Linux,购买并安装了驻云开发维护的Linux一键安装web环境。配置为nginx 1.4 MySql 5.6,创建数据库并插入含有中文的数据后,用DHC调试时中文出现了乱码,具体表现为中文部分被用“?”代替。

【解决之道】

1、首先我确定我的数据库、表、列的编码都已经设置为utf-8,该问题不是由于这些因素引起。

2、在解决中,主要参考了这篇文章Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题),不过,该文中所述解决方法和情况并不完全适合我的问题,文章下边的评论中的观点很有价值。

3、具体的解决方法是:打开MySql的配置文件——my.cnf,添加

[mysqld]
character-set-server = utf8`


然后重启MySql服务即可。注意,仅仅加这个就好了,不要添加更多的内容。

4、在解决中,也踩了几个坑,罗列如下,防止再有人入坑:

(1).如参考的这篇文章中某个评论者所述:添加

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


这两部分并没有卵用,并不会将client对应的编码设置为utf-8;

(2). 如下一条可以按需添加,具体什么条件下添加我也不清楚,就我的问题,加了也没有问题,没有更多研究:

init-connect='SET NAMES utf8'


【特别提醒】

修改配置文件时,不要简单地复制粘贴,一定要确保所有的字符都是英文的,误带入中文字符可能导致配置不正确,甚至无法启动!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息