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

问题解决笔记 -- LINUX 服务器 PHP与MYSQL中文乱码问题最终解决方案

2016-10-08 11:31 681 查看
笔者用的服务器为Ubuntu,当要往MYSQL插入中文时,碰到了乱码问题。

问题解决方案如下

一、MYSQL设置问题

经过搜索,普遍解决方案如下(视MYSQL版本为5.5之后)

修改/etc/mysql/my.cnf  

sudo gedit /etc/mysql/my.cnf  
在my.cnf文件中的[client]段和 [mysqld]段加上以下两行内容:  
[client]  

default-character-set = utf8

[mysqld]  

character-set-server = utf8
重新启动MySQL:

sudo /etc/init.d/mysql restart 

或 service mysql restart

  
查看一下现在mysql的编码  

mysql -u root -p

mysql>show variables like 'character%';  

如果修改后,显示如下,则修改成功

+--------------------------+----------------------------+  

| 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/ |  

注意MYSQL5.5后,mysqld下面的一句,跟client下的不同。

基本的解决方案如下,经过修改后,发现在php进行相应的数据库操作后仍出现中文乱码,多次百度修改仍然无果。

二、PHP编码设置问题

于是经过摸索,得出以下的解决方案

在php下使用mysqli函数

在进行数据库操作前,要加上一句,

$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli_query($conn,"SET NAMES 'UTF8'");//在进行数据库操作前加上这句

如果用mysql函数,则加上这句

mysql_query("SET NAMES 'UTF8'");//在进行数据库操作前加上这句

于是问题得以解决。当然,其他的编码参数要设置正确,加上以上这句编码设置语句才能生效。

三、LINUX编码问题

如果以上设置完后,仍然没法显示中文,那么如果是在Windows下编写的文件,那么

拷贝到Linux下的时候,则要注意编码问题

用Notepad++ 打开相应的文件,双击右下角的Dos\Windows,选择转为Unix格式

这样子,问题就得到解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐