php中文乱码问题解决方法
发布:smiling 来源: PHP粉丝网 添加日期:2014-09-21 15:00:29 浏览: 评论:0
导入php中文乱码问题一般就是字符集编码问题了,只有字符集编码问题才会导致中文乱码了,这是我总结了所有在php开发中看到中文乱码问题的根本原因了,下面我整理了一些关于php中文乱码问题解决办法与例子,希望能解决各位的朋友.
1.mysql+php中文乱码
出现这种问题是数据库连接与网页编码不统一导致了.
解决办法,在mysql 连接时我们在后面设置一句:mysql_query("SET NAMES GBK");
例子,在连接数据库的语句中,代码如下:
- mysql_connect('localhost','user','password');
- mysql_select_db('my_db');
- mysql_query("set names 'utf8'"); //select 数据库之后加多这一句
2.PHP中文文件名输出乱码
出现文名乱码是我们环境不支持中文所导致了或编码问题我们只要进行转换字符编码为uft8即可,代码如下:
- $file_name="我的文件.jpg";
- $file_name=iconv("utf-8","gb2312",$file_name); //解决中文乱码问题
- echo '$file_name';
3.json_encode中文乱码问题
1.json_encode UTF8码中文后的字符串不可阅读
2.json_encode 多级数组中文乱码问题
3.json_encode 数组中包含换行时错误问题
4.json_encode 数组中键为中文的问题
实例代码如下:
- function _encode($arr)
- {
- $na = array();
- foreach ( $arr as $k => $value ) {
- $na[_urlencode($k)] = _urlencode ($value);
- }
- return addcslashes(urldecode(json_encode($na)),"rn");
- }
- function _urlencode($elem)
- {
- if(is_array($elem)){
- foreach($elem as $k=>$v){
- $na[_urlencode($k)] = _urlencode($v);
- }
- return $na;
- }
- return urlencode($elem);
- }
3.HTML内容编码
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,这里我们指定了浏览器在解析HTML时使用UTF-8编码 。如果这里没有指定,浏览器会使用自己缺省的编码。不同的浏览器缺省编码会有所不同,比如IE6是GB2312,FireFox是UTF-8。所以,上面这段代码如果没有,在FireFox会显示正常,在IE6就会显示乱码。
4.php内容乱码
在php中我们只要在文件头加上,代码如下:
<?php header("Content-type:text/html;charset=utf-8");?>
5.url中文乱码的兼容性
在url地址里出现中文参数,接收页面出现乱码,这个是经常遇到的问题.
最基本的解决办法是链接里加上urlencode,接收页面会自动解码或者加上urldecode,但是有时候链接来自多个地方,有的意见urlencode了,有点没有,比如在谷歌浏览器(chrome)地址栏里敲入中文,传递的过程浏览器会自动给你编码,而IE核心缺不然.
这就导致同一个接收页面在谷歌浏览器里可以正常显示,而在IE浏览器则是乱码.
解决方法,代码如下:
- $keyboard2 = iconv("gb2312","UTF-8",$keyboard);
- if($keyboard2)
- $keyboard=$keyboard2;
6.htmlentities汉字中文乱码
htmlentities函数作用在汉字变量中的时候会出现乱码
$resultsText = str_replace("[QUERY]", htmlentities($(www.phpfensi.com)query), $resultsText);
正确的做法是改变htmlentities的默认参数:htmlentities($query,ENT_COMPAT,'UTF-8')
7.PHP下载文件名中的中文乱码,代码如下:
$filename = "中文 文件名.txt";
$encoded_filename = urlencode($filename);
$encoded_filename = str_replace("+", "%20", $encoded_filename);
Tags: php中文乱码 php乱码方法
相关文章
- ·在php中中文乱码解决方法(2013-11-29)
- ·PHP读MYSQL中文乱码的解决方法(2014-09-11)
- ·php中文乱码问题和MySql出现中文乱码的解决方法(2014-09-11)
- ·PHP Header下载文件在IE文件名中文乱码问题(2014-09-13)
- ·php ord 函数与中文乱码解决方法(2014-09-19)
- ·php生成二维码中文乱码问题解决方法(2014-09-20)
- ·PHP中文文件名输出乱码解决方法(2014-09-21)
- ·解决PHP中文乱码的4项小技巧(2015-04-04)
- ·PHP DOMDocument保存xml时中文出现乱码(2015-04-08)
- ·php中文乱码怎么办如何让浏览器自动识别utf-8(2020-08-27)
- ·解决php接收shell返回的结果中文乱码问题(2020-08-29)
- ·PHP中使用file_get_contents抓取网页中文乱码问题解决方法(2021-05-03)
- ·php生成二维码时出现中文乱码的解决方法(2021-05-03)
- ·PHP中文乱码解决方案(2021-05-15)
- ·PHP MPDF中文乱码的解决方式(2021-06-29)
- ·Linux php 中文乱码的快速解决方法(2021-08-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)