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

如何使用JavaScript将ASCII字符串转换为UTF-8?

ASCII乱码转UTF-8的JavaScript实现方法

你的问题本质是UTF-8字节序列被错误地以Latin-1(ISO-8859-1)编码解析,导致出现ᅢᄄ这类乱码字符。要恢复正确的UTF-8字符串,只需反转这个错误的解析过程:

实现函数

function restoreUtf8FromMangledLatin1(str) {
    // 将乱码字符串转换为UTF-8字节数组:每个字符对应原UTF-8的单个字节
    const byteArray = new Uint8Array(str.length);
    for (let i = 0; i < str.length; i++) {
        byteArray[i] = str.charCodeAt(i);
    }
    // 使用UTF-8解码字节数组,得到正确字符串
    return new TextDecoder('utf-8').decode(byteArray);
}

测试验证

// 原始乱码字符串
const mangledInputs = [
    'imagᅢᄄ-thrᅢ랡.png',
    'imᅢᄂge-twᅢᄊ.png',
    'ᅢᆲmᅢᄀgᅢᄅ-fᅢ배ᄏr.png'
];

// 转换并输出结果
mangledInputs.forEach(input => {
    console.log(restoreUtf8FromMangledLatin1(input));
});

输出结果:

imagè-thréê.png
imäge-twö.png
ìmágé-fòûr.png

原理说明

比如正确字符è的UTF-8编码是两个字节:0xC3和0xA8。当这两个字节被错误当作Latin-1解析时,会被转换成ᅢ(对应0xC3)和ᄄ(对应0xA8),也就是你看到的ᅢᄄ。我们的函数先把这些乱码字符转回对应的字节值,再用UTF-8标准解码,就能还原出正确的Unicode字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:25:29