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

SMF论坛编辑后出现%u格式字符,如何解码为正常文本?

字符格式类型及解码方法

格式说明

你遇到的%u0398%u03B1这类是JavaScript风格的Unicode转义序列,它以%u为前缀,后跟四位十六进制数,对应Unicode字符的码点。这种格式属于早期JS环境中使用的字符转义方式,和标准URL编码(%xx两位十六进制)逻辑类似,但前缀和长度不同。

PHP解码方法

PHP原生函数不直接支持%u格式解码,可通过转换为JSON兼容的\u转义格式实现解码:

$encodedText = '%u0398%u03B1 %u03C4%u03C1%u03B5%u03BE%u03C9 %u03B5%u03C3%u03C4%u03C9 %u03BA%u03B1%u03B9 %u03BC%u03B5 %u03B5%u03BD%u03B1 %u03C0%u03BF%u03B4%u03B1';
// 将%u替换为\u,包装成JSON字符串格式
$jsonEncoded = '"' . str_replace('%u', '\u', $encodedText) . '"';
$decodedText = json_decode($jsonEncoded);
// 输出解码后的希腊语文本:Τα τρεω εσω και με ενα ποδα
echo $decodedText;

JavaScript解码方法

有两种可靠的解码方式:

方法1:利用JSON.parse(推荐)

const encodedText = '%u0398%u03B1 %u03C4%u03C1%u03B5%u03BE%u03C9 %u03B5%u03C3%u03C4%u03C9 %u03BA%u03B1%u03B9 %u03BC%u03B5 %u03B5%u03BD%u03B1 %u03C0%u03BF%u03B4%u03B1';
const decodedText = JSON.parse('"' + encodedText.replace(/%u/g, '\\u') + '"');
console.log(decodedText); // 输出:Τα τρεω εσω και με ενα ποδα

方法2:正则匹配转换

const encodedText = '%u0398%u03B1 %u03C4%u03C1%u03B5%u03BE%u03C9 %u03B5%u03C3%u03C4%u03C9 %u03BA%u03B1%u03B9 %u03BC%u03B5 %u03B5%u03BD%u03B1 %u03C0%u03BF%u03B4%u03B1';
const decodedText = encodedText.replace(/%u([0-9A-Fa-f]{4})/g, (_, hex) => {
  return String.fromCharCode(parseInt(hex, 16));
});
console.log(decodedText); // 输出相同结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:34:51