如何用JavaScript转换Wayback Machine中SHIFT-JIS编码的日文乱码?
解决Wayback Machine中SHIFT-JIS编码乱码的JavaScript方案
- 可以通过JavaScript将这类乱码转换为可读日文,核心逻辑是还原原始SHIFT-JIS字节后重新解码。
- 具体实现步骤:
- 提取乱码字符串的原始字节(乱码是浏览器误把SHIFT-JIS字节当成单字节编码解析的结果)
- 用
TextDecoder以SHIFT-JIS编码解码字节数组
- 示例代码:
function fixShiftJisGarble(garbledStr) { const byteArr = new Uint8Array(garbledStr.length); for (let i = 0; i < garbledStr.length; i++) { byteArr[i] = garbledStr.charCodeAt(i) & 0xFF; } return new TextDecoder('shift-jis').decode(byteArr); } // 测试示例乱码 const testGarble = "¦‚±‚̤•iƒWƒƒƒ“ƒ‹‚Ì’†‚©‚çƒL[ƒ[ƒh‚Åiž‚ñ‚ÅŒŸõ‚ª‚Å‚«‚Ü‚·B"; console.log(fixShiftJisGarble(testGarble));
- 关键说明:
- 乱码字符的UTF-16码点低8位对应原始SHIFT-JIS字节,通过
charCodeAt(i) & 0xFF提取 TextDecoder是现代浏览器原生API,无需额外依赖,能正确处理SHIFT-JIS的多字节字符
- 乱码字符的UTF-16码点低8位对应原始SHIFT-JIS字节,通过
- 适用场景:仅针对SHIFT-JIS编码页面被错误解析为单字节编码(如ISO-8859-1)导致的乱码。
内容的提问来源于stack exchange,提问作者kevski
相关产品推荐
相关产品推荐

