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

JavaScript中Unicode转义还原:如何将乱码Ã\u0098vo转换为目标字符串Øvo

问题本质

你拿到的Ã\u0098vo是UTF-8编码的字节流被错误按照单字节编码(ISO-8859-1)解析得到的乱码,你之前的解码尝试顺序完全和编码逻辑相反,所以无法得到正确结果。

方案1:直接还原已有的乱码字符串

如果已经拿到Ã\u0098vo这类乱码,可以直接用编码转换还原:

function fixEncoding(messyStr) {
  // 把乱码按ISO-8859-1转回原始字节流,再按UTF-8解码
  return new TextDecoder('utf-8').decode(
    new Uint8Array([...messyStr].map(c => c.charCodeAt(0)))
  );
}

// 测试
console.log(fixEncoding('Ã\u0098vo')); // 输出 Øvo

方案2:完整反向解码原编码逻辑的输出

原编码逻辑的步骤是JSON序列化 → encodeURIComponent → unescape → base64编码,反向解码需要完全倒序操作:

function decodeOriginalModel(base64Input) {
  // 1. 先解码base64
  const base64Decoded = window.atob(base64Input);
  // 2. 转成URI编码格式
  const escapedStr = escape(base64Decoded);
  // 3. 解码URI得到原始JSON字符串
  const originJson = decodeURIComponent(escapedStr);
  // 4. 解析JSON得到原始数据
  return JSON.parse(originJson);
}

之前尝试失败的原因

你之前测试时把atob放在最外层,还把decodeURIComponent放在escape之前,操作顺序和编码逻辑完全相反,所以会触发字符非法报错,或者拿到错误结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:27:04