php5.4中JSON_UNESCAPED_UNICODE让Json更懂中文

 更新时间:2016年11月25日 16:46  点击:2167
在php5.4版本之前如果想让json支持中文我们需要进行一些转换操作,如使用json_encode中文的话会转换成像\\u4e2d\\u6587类的编码了,但有了JSON_UNESCAPED_UNICODE之后直接不转码输出中文,下面我们给大家具体测试一下。

用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”u***”的格式, 还会在一定程度上增加传输的数据量.

 代码如下 复制代码

<?php
echo json_encode("中文"); //Output: "u4e2du6587"


这就让我们这些在天朝做开发的同学, 很是头疼, 有的时候还不得不自己写json_encode.

而在PHP5.4, 这个问题终于得以解决, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议, 就是说, Json不要编码Unicode.

看下面的例子:

 代码如下 复制代码

<?php
echo json_encode("中文", JSON_UNESCAPED_UNICODE); //Output: "中文"


怎么样, 是不是让大家很开心的改动?

呵呵, 当然, Json在5.4还加入了: JSON_BIGINT_AS_STRING, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES等选项,

根据本人经验如果在使用php函数或方法出现Call to undefined function curl_init”错误提醒时就是php.ini中配置文件没有配置好了,解决方法也非常的简单

XAMPP打开CURL的方法:

修改 X:/xampp/php/php.ini文件
查找如下代码,大约在952行,XAMPP版本不同可能有点小区别,用编辑器查找就行

;extension=php_curl.dll

将其前面的分号去掉,然后重启Apache,搞定。


如果还是不行我们要注意一点是:要保证php_curl.dll 复制到php安装目录下的ext下,libeay32.dll和ssleay32.dll复制到php安装目录下。(我的配置文件是system32,和php5ts.dll一个地)

 

用了好几年啦!觉得挺好的一个调试程序,主要是调用php的内部函数print_r(),其实print_r就是用来调试用的,只是有些地方不够好了,下面我来自定义一个函数可以满足我们的需求,下面大家一起来看看。

比如缩进关系,每次写还要在前面加上echo "<pre>" ,其实这很不爽的!还有内部的var_dump(),反正效果不怎么理想的,所以就自己写了这个,在配置文件中加上此函数、每次调用只要dump($var) $var不管是变量、数组、类库都能打印出来——爽呀!

 

 代码如下 复制代码
/**
 * 输出变量的内容,通常用于调试
 * @package Core
 * @param mixed $vars 要输出的变量
 * @param string $label
 * @param boolean $return
 */
function dump($vars, $label = '', $return = false) {
    if (ini_get('html_errors')) {
        $content = "<pre>n";
        if ($label != '') {
            $content .= "<STRONG>{$label} :</STRONG>n";
        }
        $content .= htmlspecialchars(print_r($vars, true));
        $content .= "n<pre>n";
    }else {
        $content = $label . " :n" . print_r($vars, true);
    }
    if($return) {
        return $content;
    }else {
        echo $content;
        return null;
    }
}

/**
 ** 温馨提示:本站所有文章均来自PHPma精心编辑,99%原创,转帖之人需保留本站的链接
 ** 本站所有文章仅代表本人观点,转帖概不负责

 **/

php中判断文件是否存在我们会使用file_exists函数或is_file函数,但在使用file_exists时如果你文件名或路径是中文在uft8编码文档是是无效的那么如何解决此问题呢,下面我们一起来看看。

定义和用法

file_exists() 函数检查文件或目录是否存在。

如果指定的文件或目录存在则返回 true,否则返回 false。

例子1

 代码如下 复制代码

<?php
echo file_exists("test.txt");
?>

输出:

1

例子2

 代码如下 复制代码

$realname='中文.txt';


if(file_exists($realname)) {

   // 永远都进不了这里

}
else
{
  echo 'www.111cn.net 提醒你文件不存在了';
}

输出结果是 www.111cn.net 提醒你文件不存在了

但我很惊讶呀文件是存在了,并且路径也没有问题php文件与中文.txt在同一目录所以这样写是没有问题,于时想想会不会是中文问题于,我对编码进行转换

解决方案:

 代码如下 复制代码

$realname='中文.txt';

if(file_exists(iconv('UTF-8','GB2312',$realname))) {

   // 这样就可以支持了

}


结果显示1 ,问题解决了

一聚教程小编提醒你,在php中最好不要使用中文名字,像apache,linux,php这些对中文支持不怎么好,所以大家尽量使用英文哦。

 

自动补足空白位数在php中str_pad函数可以帮我们实现哦,str_pad() 函数把字符串填充为指定的长度。

str_pad() 函数把字符串填充为指定的长度。

语法

str_pad(string,length,pad_string,pad_type)

参数 描述
string 必需。规定要填充的字符串。
length 必需。规定新字符串的长度。如果该值小于原始字符串的长度,则不进行任何操作。
pad_string 可选。规定供填充使用的字符串。默认是空白。
pad_type

可选。规定填充字符串的那边。

可能的值:

  • STR_PAD_BOTH - 填充到字符串的两头。如果不是偶数,则右侧获得额外的填充。
  • STR_PAD_LEFT - 填充到字符串的左侧。
  • STR_PAD_RIGHT - 填充到字符串的右侧。这是默认的。

 代码如下 复制代码

$cardCount = 10;
$arr = array();
for ($i = 1; $i <= $cardCount; $i++) {
$strCard = str_pad($i, 10, '0', STR_PAD_LEFT);
$arr[] = $strCard;
}

print_r($arr);

Array ( [0] => 0000000001 [1] => 0000000002 [2] => 0000000003 [3] => 0000000004 [4] => 0000000005

[5] =>0000000006 [6] => 0000000007 [7] => 0000000008 [8] => 0000000009 [9] => 0000000010 )

 

[!--infotagslink--]

相关文章

  • js URLdecode()与urlencode方法支持中文解码

    下面来介绍在js中来利用urlencode对中文编码与接受到数据后利用URLdecode()对编码进行解码,有需要学习的机友可参考参考。 代码如下 复制代码 ...2016-09-20
  • 关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)

    最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24
  • C#读取中文文件出现乱码的解决方法

    这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下...2020-06-25
  • Mysql在debian系统中不能插入中文的终极解决方案

    在debian环境下,彻底解决mysql无法插入和显示中文的问题Linux下Mysql插入中文显示乱码解决方案mysql -uroot -p 回车输入密码进入mysql查看状态如下:默认的是客户端和服务器都用了latin1,所以会乱码。解决方案:mysql>use...2013-10-04
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • linux mint 下mysql中文支持问题

    一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo /etc/init.d/mysql stop 2.修改mysql配置文件 mysql配...2015-10-21
  • php怎么用拼音 简单的php中文转拼音的实现代码

    小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • FlashFXP连接站点中文显示乱码解决办法

    FlashFXP是一款常用的服务器客户连接软件了,我们可以通过FlashFXP来上传或下载文件,但有一些朋友使用FlashFXP时碰到中文目录或文件名乱码问题,那么要如何来解决呢?具体就...2016-10-10
  • php中把unicode编码转化为中文

    小编在网上看到最多的就是汉字转换unicode编码了,今天我们看到一个反过来的操作就是把unicode转换成中文了,下面一起来看看 这两天帮别人开发微信平台好友板块,存...2016-11-25
  • .Net(c#)汉字和Unicode编码互相转换实例

    下面小编就为大家带来一篇.Net(c#)汉字和Unicode编码互相转换实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • php 判断是否是中文/英文/数字示例代码

    复制代码 代码如下: $str='asb天水市12'; if (preg_match("/^[/x7f-/xff]+$/", $str)){ echo '全部是汉字'; }else { echo '不全是汉字'; } /** PHP自带的判断是否是中文, eregi('[^/x00-/x7F]', $str ) //中文 ereg...2013-10-04
  • php中文转换成拼音代码

    <?php教程 function cn2pinyin($_string, $_code='gb2312') { $_datakey = "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|b...2016-11-25
  • JavaScript过滤字符串中的中文与空格方法汇总

    这篇文章主要介绍了JavaScript过滤字符串中的中文与空格方法汇总 的相关资料,需要的朋友可以参考下...2016-03-09
  • three.js显示中文字体与tween应用详析

    这篇文章主要给大家介绍了关于three.js显示中文字体与tween应用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-04
  • php 根据啊拉伯数字转变成大写中文数字

    // 原是是根据用户输入的数字判断再转换成想要的大写数字,如果我们先把大小写存在一个数组,再判断进行转换就OK了。 $data = $_POST['rmb']; if (!ereg("^[0-9.]",$dat...2016-11-25
  • PHP中对汉字进行unicode编码和解码的实现方法

    小编推荐的这篇文章介绍了PHP中对汉字进行unicode编码和解码的实现方法,非常实用,有兴趣的同学可以参考一下。 代码如下复制代码 //将内容进行UNICODE编码fu...2017-07-06
  • PHP把16进制的编码转为中文程序代码

    今天在做公司的项目的时候,遇到一个问题,群聊天记录存入数据库的时候把聊天记录及央视使用16进制转换,我在做将聊天记录导出为text文本的时候,需要将聊天记录先从16进制转...2016-11-25
  • 如何正确统计中文字数?

    PHP代码:-------------------------------------------------------------------------------- function ccStrLen($str) #计算中英文混合字符串的长度 { $ccLe...2016-11-25
  • 深度解析MySQL 5.7之中文全文检索

    InnoDB默认的全文索引parser非常合适于Latin,因为Latin是通过空格来分词的。但对于像中文,日文和韩文来说,没有这样的分隔符。一个词可以由多个字来组成,所以我们需要用不同的方式来处理。在MySQL 5.7.6中我们能使用一个新的全文索引插件来处理它们:n-gram parser。...2017-01-09