Php+MYSQL中文编码问题解决全过程
2007-04-23 14:32
549 查看
开发环境:
Php5+mysql5
中文编码问题产生的全过程:
网页编码格式为gb2312(当然网页不是我们做的,如果是我们自己做的话不用说肯定是utf-8编码了,也就不会有什么编码问题。),书库库我们刚开始设置为gb2312编码。
问题:有些汉字无法存入数据库,如:囍 情况:刚开我们在创建数据连接之后执行:$mysqli -> set_charset('gb2312'); 发现有“囍”字的字段数据为空。后来把上面那条语句改为:$mysqli -> set_charset('gbk');发现“囍”的位置变成:“?”。
解决方案:
一、将所有的网页以及数据库全部转为utf-8,但是我们的系统已经到了用户测试阶段,而且用户不想把数据重新输入一次,如果正常则直接绑定到正常网址,再说我根本不想这么做。
二、不用改变网页的情况下,只改变数据库的参数或进行简单的操作就可以解决这个问题,还好这种办法被我找到,这种办法是最容易得的解决办法(对我来说)。接下来我就详细介绍这种方法:
1.导出数据库中的数据。方法:到mysql安装目录的bin下执行:./mysqldump –p databasename > data.sql
根据提示输入密码(没有密码就不用输了)。
2.用vi(你可以随便使用什么编辑器)编辑: data.sql :
$>vi data.sql
在vi命令模式下输入: :g/gb2312/s//utf8/g 将gb2312替换为utf8
SET NAMES utf8; 的注释去掉,在文件的前几行。
保存退出: :x
3.改变数据库的默认编码,方法:打开my.cnf(mysql配置文件)
在[mysqlclient]下面添加:default-character-set=gbk
在[mysqld]下面添加:default-character-set=gbk
重起mysql服务器。
4.新建一个数据库:
Create database newdatabasename character set utf8
将数据导入数据库:
到mysql安装目录下的bin下面执行:
./mysql -h localhost -uroot -pyourpassword newdatabasename < data.sql
5.在php数据库建立连接的后面设置客户端数据编码格式,如:
$mysqli = @new mysqli($host,$uid, $pwd, $dbname);
/* check connection */
if (mysqli_connect_errno()) {
die("服务器异常,数据库连接失败!");
}
$mysqli -> set_charset('gbk');
…….
总结:这种解决办法的主要思想是,只改变数据库的编码,而不改变数据客户端编码,mysql会自动进行编码转换。这样在不用改变网页程序的情况下解决中文编码问题。
Php5+mysql5
中文编码问题产生的全过程:
网页编码格式为gb2312(当然网页不是我们做的,如果是我们自己做的话不用说肯定是utf-8编码了,也就不会有什么编码问题。),书库库我们刚开始设置为gb2312编码。
问题:有些汉字无法存入数据库,如:囍 情况:刚开我们在创建数据连接之后执行:$mysqli -> set_charset('gb2312'); 发现有“囍”字的字段数据为空。后来把上面那条语句改为:$mysqli -> set_charset('gbk');发现“囍”的位置变成:“?”。
解决方案:
一、将所有的网页以及数据库全部转为utf-8,但是我们的系统已经到了用户测试阶段,而且用户不想把数据重新输入一次,如果正常则直接绑定到正常网址,再说我根本不想这么做。
二、不用改变网页的情况下,只改变数据库的参数或进行简单的操作就可以解决这个问题,还好这种办法被我找到,这种办法是最容易得的解决办法(对我来说)。接下来我就详细介绍这种方法:
1.导出数据库中的数据。方法:到mysql安装目录的bin下执行:./mysqldump –p databasename > data.sql
根据提示输入密码(没有密码就不用输了)。
2.用vi(你可以随便使用什么编辑器)编辑: data.sql :
$>vi data.sql
在vi命令模式下输入: :g/gb2312/s//utf8/g 将gb2312替换为utf8
SET NAMES utf8; 的注释去掉,在文件的前几行。
保存退出: :x
3.改变数据库的默认编码,方法:打开my.cnf(mysql配置文件)
在[mysqlclient]下面添加:default-character-set=gbk
在[mysqld]下面添加:default-character-set=gbk
重起mysql服务器。
4.新建一个数据库:
Create database newdatabasename character set utf8
将数据导入数据库:
到mysql安装目录下的bin下面执行:
./mysql -h localhost -uroot -pyourpassword newdatabasename < data.sql
5.在php数据库建立连接的后面设置客户端数据编码格式,如:
$mysqli = @new mysqli($host,$uid, $pwd, $dbname);
/* check connection */
if (mysqli_connect_errno()) {
die("服务器异常,数据库连接失败!");
}
$mysqli -> set_charset('gbk');
…….
总结:这种解决办法的主要思想是,只改变数据库的编码,而不改变数据客户端编码,mysql会自动进行编码转换。这样在不用改变网页程序的情况下解决中文编码问题。
相关文章推荐
- 【MySQL】统一控制台-pma-PHP编码!解决中文乱码问题
- 【MySQL】统一控制台-pma-PHP编码!解决中文乱码问题
- [ASP/PHP/JSP]MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- 【PHP问题大全】--PHP连接MySQL出现乱码的编码解决办法
- mysql字符编码设置,mysql中文问题解决方案
- Ubuntu14.04下MySQL 5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
- MySQL不支持中文、将编码修改为utf-8,仍不支持中文问题解决方案
- 常见php与mysql中文乱码问题解决办法
- mysql编码问题以及中文乱码解决
- 解决mysql 不能插入中文 编码问题
- Linux下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题)
- Linux下MySQL5.6的修改字符集编码为UTF8(解决中文乱码问题)
- Linux下MySQL 5.5的修改字符集编码为UTF8(彻底解决中文乱码问题)
- 【mysql乱码】解决php中向mysql插入中文数据乱码的问题
- php和mysql中uft-8中文编码乱码的几种解决办法
- (原创)Linux下MySQL 5.5/5.6的修改字符集编码为UTF8(彻底解决中文乱码问题)
- MySql5.5 在安装时设置编码为utf-8,扔不能插入中文的问题解决
- MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- 解决mysql 不能插入中文 编码问题
- [绝对经典]Linux+Mysql+Apache+Php开发环境搭建全过程及问题的解决办法