问题解决笔记 -- LINUX 服务器 PHP与MYSQL中文乱码问题最终解决方案
2016-10-08 11:31
681 查看
笔者用的服务器为Ubuntu,当要往MYSQL插入中文时,碰到了乱码问题。
问题解决方案如下
修改/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下使用mysqli函数
在进行数据库操作前,要加上一句,
如果用mysql函数,则加上这句
mysql_query("SET NAMES 'UTF8'");//在进行数据库操作前加上这句
于是问题得以解决。当然,其他的编码参数要设置正确,加上以上这句编码设置语句才能生效。
拷贝到Linux下的时候,则要注意编码问题
用Notepad++ 打开相应的文件,双击右下角的Dos\Windows,选择转为Unix格式
这样子,问题就得到解决了。
问题解决方案如下
一、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格式
这样子,问题就得到解决了。
相关文章推荐
- PHP 从数据库Mysql中读取数据生成excel(解决乱码问题,解决中文变问号问题)
- 解决PHP和MYSQL中文乱码问题
- 【安卓笔记】android客户端向tomcat服务器发送请求中文乱码问题解决
- 简单解决php+mysql时mysql数据表中的中文乱码问题
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- 【转贴】Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- [PHP]解决PHP和MySQL的中文乱码问题
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- Linux下MySQL 5.5/tomact6/Centos 的修改字符集编码为UTF8(彻底解决中文乱码问题)
- PHP 中文乱码的问题解决方案,可解决80%的情况。
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- MySQL字符集 GBK、GB2312、UTF8区别 解决 MYSQL中文乱码问题 收藏 MySQL中涉及的几个字符集 character-set-server/default-character-set:服务器字符集,默认情况下所采用
- 【mysql乱码】解决php中向mysql插入中文数据乱码的问题
- Linux下MySQL 5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
- php+mysql中文数据乱码问题的解决
- Linux环境编译安装Mysql以及PHP中文乱码解决