本文实例讲述了php5.4以下版本json不支持不转义内容中文的解决方法。分享给大家供大家参考。具体分析如下:
写ERP接口的时候遇到JAVA方接收这种json_encode后的内容
其中"creator":"\u751f\u6d3b\u7528\u54c1\u6d4b\u8bd5\u5c0f\u5c4b"为中文,目前我们用的是UTF8的。但是JAVA方接收这种的时候自动把转义后的中文转回成中文的,那签名计算方式是按这个来的,签名自然对不上了。
查了PHP手册,5.4以下的不能不转义中文,但是我们服务器上的PHP版本是5.3的,于是用PHP模拟了一个JSON方法。
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
function json_encode_ex($var) {
return json_encode($var, JSON_UNESCAPED_UNICODE);
}
} else {
function json_encode_ex($var) {
if ($var === null)
return 'null';
if ($var === true)
return 'true';
if ($var === false)
return 'false';
static $reps = array(
array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"', ),
array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"', ),
);
if (is_scalar($var))
return '"' . str_replace($reps[0], $reps[1], (string) $var) . '"';
if (!is_array($var))
throw new Exception('JSON encoder error!');
$isMap = false;
$i = 0;
foreach (array_keys($var) as $k) {
if (!is_int($k) || $i++ != $k) {
$isMap = true;
break;
}
}
$s = array();
if ($isMap) {
foreach ($var as $k => $v)
$s[] = '"' . $k . '":' . call_user_func(__FUNCTION__, $v);
return '{' . implode(',', $s) . '}';
} else {
foreach ($var as $v)
$s[] = call_user_func(__FUNCTION__, $v);
return '[' . implode(',', $s) . ']';
}
}
}
用的时候直接当内置函数用就行。json_encode_ex(array('钓鱼岛'=>'中国的'));还支持多维数组。
希望本文所述对大家的php程序设计有所帮助。

当Windows11任务栏溢出功能停止工作时,用户将丢失重要的自定义选项。这是因为该功能允许您将尽可能多的应用程序添加到任务栏并轻松启动它们。虽然这个问题可能令人沮丧,但并不是最难解决的。在本综合指南中,我们准备了万无一失的方法,以使任务栏溢出功能再次正常工作。为什么任务栏溢出在Windows11上不起作用?正如用户报告的那样,有几个因素可能导致任务栏溢出在Windows11上不起作用。以下是一些值得注意的原因:过时的PC:过时的操作系统是此问题的主要原因。如果您使用高于Windows11预览体

一款基于Windows11最新版本23H2的轻量化系统「Tiny112311」正式推出,提供了更精简的系统体验。该系统去除了许多不必要的组件和高硬件要求,使得安装后的占用空间仅需约8GB。Tiny112311集主要功能于一身作为基于最新Windows11版本23H2的产物,Tiny112311包含了微软引入的所有新功能,包括Copilot功能(需通过winget下载微软Edge,因为没有预装浏览器)、原生RAR支持、重新设计的音量滑块、设定应用中的RGB控制等。与之前的Tiny11版本相比,23

一些朋友在下载安装完win11系统后,发现自己的win11版本显示的却是win10,这可能是因为我们下载了错误的win11系统,也可能是因为微软win11自身的原因,下面就跟着小编一起来看看吧。win11安装后显示版本是win10怎么办一、下载了错误的win111、如果我们下载了错误的win11系统,就可能会在安装后显示win10。2、因此大家可以重新下载一个win11进行覆盖安装。3、我们不需要重新退回win10,只需要装载该系统,然后运行“setup”安装程序进行安装就可以了。二、系统错误1

3月27号,Stability AI的创始人兼首席执行官Emad Mostaque在一条推文中宣布,Stable Diffusion XL 现已可用于公开测试。以下是一些事项:“XL”不是这个新的AI模型的官方名称。一旦发布稳定性AI公司的官方公告,名称将会更改。与先前版本相比,图像质量有所提高与先前版本相比,图像生成速度大大加快。示例图像让我们看看新旧AI模型在结果上的差异。Prompt: Luxury sports car with aerodynamic curves, shot in a

PHP8.0是当前最新版本的PHP编程语言。一项重要的更新是对匿名函数的改进和增强。匿名函数(也称为闭包)是一种特殊类型的函数,可以在运行时动态创建并传递给其他函数或存储在变量中。在PHP中,匿名函数对于高级编程和Web开发至关重要。PHP8.0提供了一些新的语法和功能,可以使匿名函数更加灵活和易于使用。其中一些更新如下:函数参数的类型声明在PHP8.0中,

不少用户在使用电脑系统的时候都会比较纠结不知道该怎么选择win101909和22h2这两个版本,其实从版本迭代来看,建议是选择22H2更好,因为这个可以看成是一个版本更新。win101909和22h2哪个好答:win1022h2更好。Windows1022H2相较于先前的版本1909而言,虽然只是些许的更新改进,但这实际上算是一种微小的突破性进步。1、1909版乃是Windows10的第九款迭代版本,该产品在2019年的11月份正式浮出水面。2、此版本为功能升级,并非全新的Windows10版本

Microsoft计划在Windows中禁用传输层安全性(TLS)协议版本1.0和1.1。该公司于1年2023月日在其技术社区网站上宣布了这一消息。这两个协议可以追溯到1999年(TLS1.0)和2006年(TLS1.1),此后被新版本TLS1.2和TLS1.3超越。Microsoft指出,在较旧的协议版本中发现了安全问题,并且“互联网标准和监管机构已弃用或不允许TLS版本1.0和1.1作为响应。多年来,TLS1.0和1.1的使用量显着下降,Microsoft认为禁用这两种协议的时候到了。Mic

如果我们当前使用的操作系统是win102004的话,对于一些用户在使用的过程中可能就会遇到一些无法解决的问题。针对win10最新版本2004驱动冲突的情况,小编觉得我们可以尝试使用第三方软件进行问题的修复,可以升级更新自己的驱动或者重装驱动即可。详细操作方法就来看下小编是怎么做的吧~win10最新版本2004驱动冲突怎么解决方法一:1.找到桌面上的图标,右键点击。点击之后会弹出菜单,选择2.打开窗口之后,找到并点击窗口左侧的按钮3.打开之后,找到下的显卡型号一项,右键点击,并在弹出的菜单中选择4


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。