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

【问题背景】使用阿里云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' 

【特别提醒】
修改配置文件时,不要简单地复制粘贴,一定要确保所有的字符都是英文的,误带入中文字符可能导致配置不正确,甚至无法启动!

你可能感兴趣的:(nginx,mysql,数据库,阿里云,aliyun)