찾다
백엔드 개발PHP 튜토리얼php5.4 이하의 JSON 버전은 content_php 팁을 이스케이프 처리하지 않고 중국어 솔루션을 지원하지 않습니다.

이 기사의 예에서는 php5.4 이하 버전의 json이 이스케이프되지 않은 중국어 콘텐츠를 지원하지 않는 문제에 대한 솔루션을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.

ERP 인터페이스를 작성할 때 이 json_encoded 콘텐츠를 수신하는 JAVA 측을 만났습니다

코드 복사 코드는 다음과 같습니다.
{"orderCode":"1401160935542399","creator":"u751fu6d3bu7528u54c1u6d4bu8bd5u5c0fu5c4b"}

그 중 "creator":"u751fu6d3bu7528u54c1u6d4bu8bd5u5c0fu5c4b"는 중국어로 현재 UTF8을 사용하고 있습니다. 하지만 JAVA 측에서는 이를 수신하면 이스케이프된 중국어를 다시 중국어로 자동 변환하므로 서명 계산 방법은 당연히 서명이 정확하지 않습니다.

PHP 매뉴얼을 확인해보니 5.4 이하에서는 한자를 이스케이프 처리해야 한다고 나와 있는데, 저희 서버의 PHP 버전이 5.3이기 때문에 PHP를 사용하여 JSON 방식을 시뮬레이션했습니다.

코드 복사 코드는 다음과 같습니다.
//탈출 없이 조슨 중국어 시뮬레이션
if (version_compare(PHP_VERSION, '5.4.0') >= 0) {
함수 json_encode_ex($var) {
          return json_encode($var, JSON_UNESCAPED_UNICODE);
}
} 그 밖의 {
함수 json_encode_ex($var) {
If ($var === null)
              'null'을 반환합니다.

if ($var === true)
             'true'를 반환합니다.

if ($var === false)
              'false'를 반환합니다.

정적 $reps = 배열(
              배열("\", "/", "n", "t", "r", "b", "f", '"', ),
               배열('\\', '\/', '\n', '\t', '\r', '\b', '\f', '"', ),
);

if (is_scalar($var))
                return '"' . str_replace($reps[0], $reps[1], (string) $var) . '"';

if (!is_array($var))
                새로운 예외 발생('JSON 인코더 오류!');

$isMap = 거짓;
          $i = 0;
foreach (array_keys($var)를 $k로) {
If (!is_int($k) || $i != $k) {
                     $isMap = true;
                 휴식;
            }
}

$s = 배열();

if ($isMap) {
foreach($var는 $k => $v)
                   $s[] = '"' . $k . '":' . call_user_func(__FUNCTION__, $v);

             '{' implode(',', $s) '}'를 반환합니다.
         } else {
foreach($var를 $v로)
                    $s[] = call_user_func(__FUNCTION__, $v);

             '[' . implode(',', $s) ']';를 반환합니다.
}
}
}

사용시에는 내장된 기능으로 직접 사용하시면 됩니다. json_encode_ex(array('Diaoyu Island'=>'China')); 또한 다차원 배열을 지원합니다.

이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
修复:任务栏溢出在 Windows 11 上不起作用修复:任务栏溢出在 Windows 11 上不起作用Jul 18, 2023 am 09:41 AM

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

轻量化版 Win 11 – Tiny11 2311 正式推出:只占 8GB 空间轻量化版 Win 11 – Tiny11 2311 正式推出:只占 8GB 空间Nov 27, 2023 pm 02:06 PM

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

如何解决Win11安装后显示为Win10版本的问题如何解决Win11安装后显示为Win10版本的问题Dec 27, 2023 am 08:18 AM

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

Stable Diffusion XL 现已推出—有什么新功能,你知道吗?Stable Diffusion XL 现已推出—有什么新功能,你知道吗?Apr 07, 2023 pm 11:21 PM

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中的匿名函数PHP8.0中的匿名函数May 14, 2023 am 08:31 AM

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

win101909和22h2对比,有什么区别?win101909和22h2对比,有什么区别?Dec 22, 2023 pm 04:09 PM

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

Windows将在不久的将来停用TLS 1.0和TLS 1.1Windows将在不久的将来停用TLS 1.0和TLS 1.1Aug 12, 2023 am 11:37 AM

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

解决win10最新版本2004驱动冲突的方法解决win10最新版本2004驱动冲突的方法Dec 26, 2023 am 10:37 AM

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

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구