刚学PHP不久,有一个与编码相关的问题请教大家:
刚用php做站的时候,程序文件都以ansi(记事本默认)格式保存,网页编码设定charset=gb2312,程序中以 mysql_query("SET NAMES 'gbk'")设定,mysql建库建表建字段都从"整理"那选"gbk_chinese_ci",这样整个显示中文都正常的.现在我想以后做站都以"utf-8"编码,现在的问题是数据库读出来的中文显示为乱码了,程序文件以utf-8保存,数据库无论我是以"utf8-general_ci"或"gbk_chinese_ci",网页里怎么改charset,或set names,从库里面读出来的中文都是乱码,请问这是为什么?还有个问题,就是以utf-8保存文件后,浏览器的编码手动就改不过来,但以ansi保存的,改成utf-8却没问题,希望大家能帮我解答.
刚用php做站的时候,程序文件都以ansi(记事本默认)格式保存,网页编码设定charset=gb2312,程序中以 mysql_query("SET NAMES 'gbk'")设定,mysql建库建表建字段都从"整理"那选"gbk_chinese_ci",这样整个显示中文都正常的.现在我想以后做站都以"utf-8"编码,现在的问题是数据库读出来的中文显示为乱码了,程序文件以utf-8保存,数据库无论我是以"utf8-general_ci"或"gbk_chinese_ci",网页里怎么改charset,或set names,从库里面读出来的中文都是乱码,请问这是为什么?还有个问题,就是以utf-8保存文件后,浏览器的编码手动就改不过来,但以ansi保存的,改成utf-8却没问题,希望大家能帮我解答.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />数据库连接也要用utf8
mysql_query("set names 'utf-8'");数据库的表编码格式也要使用utf8
全部都统一就不会出问题了
header("Content-Type:text/html;charset=utf-8");
$host="localhost";
$user="XXx
$password="XXXXXXX";//"";
$database="test2";mysql_connect($host,$user,$password) or die("程序调试中。");
mysql_select_db($database) or die("程序调试中。。");
mysql_query("SET NAMES 'utf-8'");$result=mysql_query("select title,content from test");
$t1=mysql_result($result,0,"title");
$t2=mysql_result($result,0,"content");print $t1."<BR>";
print $t2."测试中文";
?>
这是测试代码,数据库mysql的,utf8-general编码,数据是我直接在phpmyadimin插入的
发一个完整的网页声明和meta来看看
记事本很方便,但是功能太弱,用Zend或者DW重新存一下比较好
ansi则是分区域的,中文的ansi专程其他编码就会乱码或者显示成其他方式;
不知道和楼主要问的是不是一个意思?
mysql_query("set names 'utf-8'"); 这样把出错 ,本人测试过不知道什么原因
但这样mysql_query("set names utf8"); 没问题至于编码,数据库,mysql_query(),php脚本, 三点一线用同一编码绝对没错,有时mysql_query()会自动转换编码
总结一下:1、数据库: utf8-general_ci
2、PHP函数设置: mysql_query("set names utf8"); (在mysql_select_db函数之前设置)
3、XHTML头设置: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
4、PHP文件编码: utf-8
以分享为荣,以吹水为耻.