您的位置:首页 > 编程语言 > PHP开发

【整理】PHP中~中文乱码解决方案

2012-12-14 22:35 405 查看
1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。记事本和Dreamweaver 在打开页面时候会自动识别文件编码因而不太会出问题。而ZendStudio却不会自动识别编码,它只会根据首选项的配置固定以某种编码打开文件,如果工作时候一不注意,用错误编码打开文件,做了修改之后一保存,乱码就出现了

2、页面申明编码:在HTML代码HEAD里面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />来告诉浏览器网页采用了什么编码,目前中文网站开发中XXX主要用的是GB2312和UTF-8两种编码。

3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。
知道了WEB开发中哪些地方涉及到了编码,也就知道了乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。

我今天就碰到一件让我相当郁闷的问题。 起因是这样的:

在框架里面 写数据输出,输出的都是问号。此时一片雾水,想办法解决,

1.文件编码错误。于是我挨个找和此页面输出有关的页面,检查页面的编码,奇怪的是 都是统一的utf8的编码。 所以应该不是页面编码的问题。难道是数据库?

2.数据编码错误。大家都知道在数据的建立的时候会选择相应的编码,如果编码和输出页面的编码不一直的是话就出现乱码。看了和之相关的数据库,都是统一的utf-8。这点又无功而返。

3.难道是没有设置编码?检查了下设置编码的页面进行断点。一般设置编码的地方都是mysql_query(‘set name ‘utf8’).因为可能会先择其它的数据库进行转码操作,这里面的utf8是变量。于是我输出先变量看是不是utf8.结果是utf8.这就奇怪的,貌似也是正确的。就这样找了几个小时。最后在同事的围追堵截下终于找到原因。原因是 在设置utf的时候多写了一个“'”号。我当时那个心寒阿。。。。这么一个小小的标点符号就害了我两三个小时的时间。。

所以在遇到编码错误的时候从这几方面下手,但是切记在遇到变量的时候一定要进行输出调试,到底看下是不是真正的我们要的代码,或者多写了些什么符号。有的时候由于符号的编码不一样也会出现符号看不见的情况。最好的办法就是重新写一下重要的代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: