一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是gb2312编码的,却以utf-8编码打开再保存。要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码:
1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。记事本和dreamweaver在打开页面时候会自动识别文件编码因而不太会出问题。而zendstudio却不会自动识别编码,它只会根据首选项的配置固定以某种编码打开文件,如果工作时候一不注意,用错误编码打开文件,做了修改之后一保存,乱码就出现了。
2、页面申明编码:在html代码head里面,可以用7694b756d11c08f8a318c4d3520928ca(这句一定要写在b2386ffb911b14667cb8f0f91ea547a7xxx6e916e0f7d1e588d4f442bf645aedb2f前面,否则会导致页面一片空白(仅限ie+php))来告诉浏览器网页采用了什么编码,目前中文网站开发中主要用的是gb2312和utf-8两种编码。
3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如mysql内部默认是latin1编码,也就是说mysql是以latin1编码来存储数据,以其他编码传输给mysql的数据会被转换成latin1编码。
知道了web开发中哪些地方涉及到了编码,也就知道了乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ascii的,所以英文符号不会出现,中文就倒霉了。
php输出中文乱码的解决方法
第一种、html和php混合的页面解决方案
方法一:使用e8e496c15ba93d81f6ea4fe5f55a2244标签
如果是html中嵌入php代码,可以使用a80eb7cbb6fff8b0ff70bae37074b813来解决中文乱码问题
<!doctype html><html> <head> <meta charset="utf-8"> <title>php输出中文乱码</title> </head> <body> <div class="demo"> <?php echo "!"; ?> </div> </body></html>
方法二:使用header()函数
如何是html和php混编,除了按照第一个方法所说的操作之外,还需要在php文件的最上面加入这句代码:
<?phpheader("content-type:text/html;charset=utf-8"); //设置编码?>
第二种、纯php页面的中文乱码问题(数据是静态的)
如果你的php页面出现了乱码,只需要在页面的开始处加入下面代码就可以了。
<?phpheader("content-type:text/html;charset=utf-8"); //设置编码?>
第三种、php+mysql中文乱码问题
这个除了按照第三种所说的操作之外,还要在你的数据查询/修改/增加之前加入数据库编码。而且,值得注意的是,这里的utf8和之前的不一样,中间是没有横线的。
<?php mysql_query('set names utf8'); //接下来的就是查出数据或者修改,增加?>
如何你使用的mysql版本在 4.1 或更高版本,可以在链接数据库操作后,设置一个字符编码,像下面这样
注意:
在需要做数据库操作的php程序前加的 mysql_query(set names '编码');编码,一定要和php编码一致,如果php编码是gb2312那mysql编码就是gb2312,如果是utf-8那mysql编码就是 utf8,这样插入或检索数据时就不会出现乱码了
更多编程相关知识,请访问:编程教学!!
以上就是php输出中文乱码问题怎么解决?的详细内容。
