mysql数据库是原来就有的,只是新加了几个数据表,所以数据库的字符集不能改,数据表和字段的字符集统一设置成了gb2312。
页面设置如下:header("Content-Type:text/html;charset=GB2312");
mysql_query("set names 'gb1312';");//数据库连接成功以后设置
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
不含有中文的sql代码检索是可以的,但中文显示乱码;但是检索语句中有中文就不行了。写入有中文也写得进,但前面写入的再检索也检索不到。
数据库里执行sql语句的时候,如果set names 'gb2312'和select语句写在两行一起执行,返回中文没有乱码;如果先执行set names 'gb2312',再执行select语句就没有检索结果了。
这该如何解决?有没有一种方法,让这两句语句一起执行,同时能返回select的结果集呢?
页面设置如下:header("Content-Type:text/html;charset=GB2312");
mysql_query("set names 'gb1312';");//数据库连接成功以后设置
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
不含有中文的sql代码检索是可以的,但中文显示乱码;但是检索语句中有中文就不行了。写入有中文也写得进,但前面写入的再检索也检索不到。
数据库里执行sql语句的时候,如果set names 'gb2312'和select语句写在两行一起执行,返回中文没有乱码;如果先执行set names 'gb2312',再执行select语句就没有检索结果了。
这该如何解决?有没有一种方法,让这两句语句一起执行,同时能返回select的结果集呢?
然后select中文的内容可以看到?
既然在phpmyadmin中设置编码后执行成功,那按理说在你自己的PHP脚本中也是可以的。
header("Content-Type:text/html;charset=GB2312");
改为
header("Content-Type:text/html;charset=gb2312");
不清楚charset是不是大小写敏感的,试一下这样修改后行不行。
连接mysql的话,可以尝试使用pconnect,就是长连接!文件中手工写的话,看文件编码是否gb2312 or gbk的,如果不是换文件编码!另外看看表的构造语句,看到底默认编码是什么编码,可以使用 show create table 表名