/** * 部分模型会把 UTF-8 汉字输出成 <0xE5><0xA7><0xA4> 形式,还原为正常文字。 * 例:<0xE5><0xA7><0xA4> → 姤 */ export function decodeHexByteEscapes(text: string): string { return text.replace(/(?:<0x[0-9A-Fa-f]{2}>)+/gi, (match) => { const parts = match.match(/<0x([0-9A-Fa-f]{2})>/gi); if (!parts?.length) { return match; } const bytes = Uint8Array.from( parts.map((part) => parseInt(part.slice(3, 5), 16)), ); try { return new TextDecoder("utf-8", { fatal: true }).decode(bytes); } catch { return new TextDecoder("utf-8", { fatal: false }).decode(bytes); } }); }