php生成二维码中文乱码问题解决方法
最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个类型没有内容,随即判断没内容就加上一个固定的字符串,这样乱码的问题得以解决。这样解决算是曲线救国吧,不知道怎么根本解决乱码问题,谁得到方法请留言告知,谢谢。
三、 php生成二维码的几种方式
1.google开放api
代码如下 | 复制代码 |
$urlToEncode="http://gz.altmi.com"; |
2.php类库PHP QR Code
地址:http://phpqrcode.sourceforge.net/
下载:http://sourceforge.net/projects/phpqrcode/
用例:
代码如下 | 复制代码 |
# 创建一个二维码文件 |
3.libqrencode
地址:http://fukuchi.org/works/qrencode/index.en.html
php支持请参考:http://hirokawa.netflowers.jp/entry/4900/
4.QRcode Perl CGI & PHP教程 scripts
地址:http://www.swetake.com/qr/qr_cgi.html
四、第2种方法中在二维码中间加上logo
修改phpqrcode.php中的QRimage类里的png方法:
代码如下 | 复制代码 |
public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4, $saveandprint=FALSE, $mergePic='') if ($filename === false) { |
1.json_encode()中文在gbk/gb2312中中文返回为null
代码如下 | 复制代码 |
$arr = array ( array ( 'catid' => '4', 'catname' => 'www.111cn.net', 'meta_title' => '一聚教程网2' ) 结果 [{"catid":"4","catname":"www.111cn.net","meta_title":null}] |
看一了吗"meta_title":null 他本来是有一个值的为一聚教程网2了,这个我们查了一下原理是json_encode只支持uft-8编码,我们转换一下
代码如下 | 复制代码 |
<?php $data=”JSON中文”; $newData=iconv(“GB2312″,”UTF-8//IGNORE”,$data); echo $newData; //ignore的意思是忽略转换时的错误,如果没有ignore参数,所有该字符后面的字符都不会被保存。 //或是(“GB2312″,”UTF-8″,$data); ?> |
Step2
后台PHP页面(页面编码为UTF-8或者已经把字符转为UTF-8)使用json_encode将PHP中的array数组转为JSON字符串。例如:
代码如下 | 复制代码 |
<?php $testJSON=array(‘name’=>’中文字符串’,’value’=>’test’); echo json_encode($testJSON); ?> 查看输出结果为: {“name”:”u4e2du6587u5b57u7b26u4e32″,”value”:”test”} |
可见即使用UTF8编码的字符,使用json_encode也出现了中文乱码。解决办法是在使用json_encode之前把字符用函数urlencode()处理一下,然后再json_encode,输出结果的时候在用函数urldecode()转回来。具体如下:
代码如下 | 复制代码 |
<?php 查看输出结果为: {“name”:”中文字符串”,”value”:”test”} |
总结:json_encode函数只能处理uft8字符串,如果是中文估计是对字节处理不好,因为中文gbk与uft长度是不一样的哦,这个我也不深入介绍了。
在使用file_get_contents函数获取远程文件时提示Warning: file_get_contents(): couldn’t resolve错误了,这个我们可以看出是dns的问题,解决办法也简单。
今天在使用一个Caiji功能的使用,突然间出现“
Warning: file_get_contents() [function.file-get-contents]: couldn't resolve host name in ……
而本地测试却没有问题,从网上查了一些资料,发现是dns的问题。下面是解决方法:
用ssh连接linux vps, 修改vps主机的dns。
vi /etc/resolv.conf
里面的内容直接修改成:
nameserver 114.114.114.114
nameserver 8.8.8.8
保存即可,不用重启。
再次测试,OK!
在使用php做后台管理时会碰到用户登录页面会提示Warning: session_start() [function.session-start]: open...错误了,后面跟着是failed: No such file or directory了,这个是告诉我们目录不存了了,下面我来给各位介绍问题解决方案如我们我的测试111.php文件如下一段代码
<?
session_start();
$_SESSION['admin'] =$_POST['username'];
?>
运行代码提示
Warning: session_start() [function.session-start]: open(/tmpsess_84cb589ea249708b09c3d5e6836fdd0d, O_RDWR) failed: No such file or directory (2) in E:webhtdocswww.111cn.net111.php on line 9
从上面错误提示是有一句failed: No such file or directory提示了,是告诉我人找不到session缓存要写的目录了,这样我就知道原因所在了
解决办法
SESSION文件保存目录不存在。建一个就行了。
查看PHP.INI中
session.save_path = /tmp
改成你要保存的路径如session.save_path = "E:/server/php5/session_temp"
重启服务器即可。
再次运行111.php文件发现没有这个问题了哦,非常的完本站原创 http://www.111cn.net 转载必须注明来源
导入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"; |
3.json_encode中文乱码问题
1.json_encode UTF8码中文后的字符串不可阅读
2.json_encode 多级数组中文乱码问题
3.json_encode 数组中包含换行时错误问题
4.json_encode 数组中键为中文的问题
代码如下 | 复制代码 |
function _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 ?> |
5.url中文乱码的兼容性
在url地址里出现中文参数,接收页面出现乱码,这个是经常遇到的问题
最基本的解决办法是链接里加上urlencode,接收页面会自动解码或者加上urldecode
但是有时候链接来自多个地方,有的意见urlencode了,有点没有
比如在谷歌浏览器(chrome)地址栏里敲入中文,传递的过程浏览器会自动给你编码
而IE核心缺不然
这就导致同一个接收页面在谷歌浏览器里可以正常显示,而在IE浏览器则是乱码。
解决方法:
代码如下 | 复制代码 |
$keyboard2 = iconv("gb2312","UTF-8",$keyboard); if($keyboard2) |
6.htmlentities汉字中文乱码
htmlentities函数作用在汉字变量中的时候会出现乱码
$resultsText = str_replace("[QUERY]", htmlentities($(www.111cn.net)query), $resultsText);
正确的做法是改变htmlentities的默认参数
htmlentities($query,ENT_COMPAT,'UTF-8')
7.PHP下载文件名中的中文乱码
代码如下 | 复制代码 |
$filename = "中文 文件名.txt"; |
相关文章
- 最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21连接MySql速度慢的解决方法(skip-name-resolve)
最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24总结android studio注意事项及打不开等问题解决方法
经过一段时间的使用,总结了android studio打不开等问题的6种解决方法及android studio注意事项,希望对大家有所帮助。 1 首次运行,建立好项目需要下载一些东西,如果...2016-09-20- 在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<?php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
MySQL ERROR 2013 (HY000)错误解决方法
当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是在linux shell命令行中直接打 mysql 命令,...2015-03-15IE6-IE9中tbody的innerHTML不能赋值的解决方法
IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07- centos6.2,停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED,查看日志 复制代码 代码如下: 120609 11:31:31 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 120609 11:35:12 my...2015-03-15
- 小米手机如果想要刷机就必须要先解锁验证才可以,那么,如果遇到小米解锁验证失败以及小米解锁工具登录失败的现象怎么办呢?对此,本文就为大家进行解答,有需要的朋友来看看。...2016-12-21
Photoshop提示“此产品的许可证已过期"及“无法开始您的Adobe Photoshop CS5.1 订阅”解决方法
首先不要鄙视我用Photoshop盗版,实在是贵。现在我们来看看如果你的Photoshop提示“此产品的许可证已过期",还有“无法开始您的Adobe Photoshop CS5.1 订阅”如何解决吧...2016-09-14解决HttpPost+json请求---服务器中文乱码及其他问题
这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22- 今天小编在这里就来给各位photoshop的这一款软件的使用者们来详细的说一下软件的字体出现了乱码这一问题的解决方法,那么各位有出现这个问题的,下面就来跟着小编一起看...2016-09-14
- 用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 代码如下 复制代码 ...2016-11-25
- 有部分小伙伴表示自己遇到了51模拟器程序不能打开的情况,那么51模拟器打不开怎么回事?下面我就来为大家分享一下解决的方法,有需要的小伙伴就来看一看吧。  &...2017-07-06
CentOS下php使用127.0.0.1不能连接mysql的解决方法
php代码很简单:复制代码 代码如下: $server="127.0.0.1"; println("Begin"); $link = mysql_connect($server,"mysql","mysql"); if (!$link) { die('Could not connect: ' . mysql_error().mysql_errno()); } lin...2015-03-15