页面编码为UTF-8, 用echo输出中文是乱码, 如何解决? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你看看显示的时候,浏览器自动选择的编码是什么如果还是默认的gb2312,那就加上<META http-equiv=Content-Type content="text/html; charset=UTF-8">如果自动选的是UTF-8的话,应该不会有乱码 取消web server的默认编码 否则页面编码有时不会起作用 PHP代码与HTML代码在同一个文件吗?如果不在同一个文件必须保证两者保存时使用的编码相同,都存成utf-8。 直接从我空间抓过来的,打个广告~~http://phnessu4.googlepages.com/phpcode1动态网页的三个统一编码动态网页的3个申明编码统一,否则回乱码。一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存。要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码: 1、文件编码:指的是页面文件(.html .php等)本身是以何种编码来保存的。记事本和Dreamweaver或EditPlus再打开页面时候会自动识别文件编码因而不太会出问题。2、页面申明编码:在HTML代码HEAD里面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />来告诉浏览器网页采用了什么编码,目前中文网站开发中XXX主要用的是GB2312和UTF-8两种编码。 3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。应用:数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:mysql_query("SET NAMES GBK"); 或 mysql_query("SET NAMES gb2312"); (这个语句相当于执行了 SET character_set_client=gb2312; SET character_set_results=gb2312; SET character_set_connection=gb2312;不论是插入、更新、删除还是查询操作,只要是操纵数据库,都要先执行SET NAMES “gb2312″,这样才能保证插入和显示的正确性。如果插入操作前没有执行这条语句,仅在查询时执行该语句,则仍然无法保证显示的正确性。) 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用: mysql_query("SET NAMES UTF8"); 网页的文本编码也要修改的,不是单单加个<META http-equiv=Content-Type content="text/html; charset=UTF-8"> 就了事了。如果文本编码是utf-8就算不加<META http-equiv=Content-Type content="text/html; charset=UTF-8"> 也一样正常识别。 谢谢大家解答,但是问题还没解决.php和html的文本格式都是UTF-8了meta也是UTF-8但是还是有乱码. 现在发现 echo "中国" 不会出现乱码但是 $str="中国" echo $str 就乱码了请问如何解决? 谢谢!(现在, php和html的文本格式都是UTF-8了,meta也是UTF-8 ) 在网页最前面加header('Content-Type: text/html; charset=utf-8');保存时保存为utf-8 有问题求助,第二个页面没有接收到值。 页面代码问题 fck 编辑器高度如何设置 snoopy 模拟发布blog文章 virtualbox/vmware 安装了ubuntu,如何设置网络连接,使用xampp的ftp 请教个问题:关于mysql 人民币求精通PHP程序高手.帮忙改程序. 关于目录权限修改为777后回产生的安全问题的讨论 记得曾有这么一个网址收藏夹,采用树形结构,php+mysql的。有人记得这个叫什么名字吗? 为何str_replace()无法使用? 请问怎样把国外网站的PHP+Mysql源码支持中文 一个关于用php输出文件的问题(急)
<META http-equiv=Content-Type content="text/html; charset=UTF-8">如果自动选的是UTF-8的话,应该不会有乱码
如果不在同一个文件必须保证两者保存时使用的编码相同,都存成utf-8。
http://phnessu4.googlepages.com/phpcode1动态网页的三个统一编码动态网页的3个申明编码统一,否则回乱码。一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存。要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码:
1、文件编码:指的是页面文件(.html .php等)本身是以何种编码来保存的。记事本和Dreamweaver或EditPlus再打开页面时候会自动识别文件编码因而不太会出问题。2、页面申明编码:在HTML代码HEAD里面,可以用
<meta http-equiv="Content-Type" content="text/html; charset="XXX" />
来告诉浏览器网页采用了什么编码,目前中文网站开发中XXX主要用的是GB2312和UTF-8两种编码。 3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。
应用:数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:
mysql_query("SET NAMES GBK"); 或 mysql_query("SET NAMES gb2312");
(这个语句相当于执行了
SET character_set_client=gb2312;
SET character_set_results=gb2312;
SET character_set_connection=gb2312;
不论是插入、更新、删除还是查询操作,只要是操纵数据库,都要先执行SET NAMES “gb2312″,这样才能保证插入和显示的正确性。如果插入操作前没有执行这条语句,仅在查询时执行该语句,则仍然无法保证显示的正确性。) 来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用: mysql_query("SET NAMES UTF8");
php和html的文本格式都是UTF-8了
meta也是UTF-8
但是还是有乱码.
echo "中国" 不会出现乱码但是
$str="中国"
echo $str 就乱码了请问如何解决? 谢谢!
(现在, php和html的文本格式都是UTF-8了,meta也是UTF-8 )
保存时保存为utf-8