You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中json_encode输出ASCII 127(0x7f)字符的实现方法

问题原因

默认情况下 json_encode 不会转义ASCII码为127(0x7f)的DEL控制字符,该字符为不可见字符,你在输出结果中看不到它不代表不存在,只是它没有被转义为可见的\u007f形式。

解决方法

方案1:使用PHP 8.2及以上版本内置参数

PHP 8.2.0版本新增了JSON_ESCAPE_CONTROL参数,传入该参数后json_encode会自动将所有控制字符(包含0x00-0x1f、0x7f)统一转义为\uXXXX格式,完全符合你的需求:

$str = '';
for ($i=0x0; $i<=0x7f; $i++) {
   $str .= chr($i);
}

echo json_encode($str, JSON_ESCAPE_CONTROL);

方案2:兼容低版本PHP的手动处理

如果使用的PHP版本低于8.2,没有JSON_ESCAPE_CONTROL可用,可以手动替换输出JSON中的DEL字符:

$str = '';
for ($i=0x0; $i<=0x7f; $i++) {
   $str .= chr($i);
}

$jsonResult = json_encode($str);
// 手动将0x7f字符替换为转义格式
$jsonResult = str_replace(chr(0x7f), '\u007f', $jsonResult);
echo $jsonResult;

两种方案最终输出的JSON末尾都会包含\u007f,覆盖完整的ASCII字符范围。

内容的提问来源于stack exchange,提问作者Richi RM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 23:54:04