【问题标题】:Convert ISO-8859-1 encoding bytes to UTF-8将 ISO-8859-1 编码字节转换为 UTF-8
【发布时间】:2018-12-26 14:48:04
【问题描述】:

我有一个二进制文件如下:8950 4e47 0d0a 1a0a 0000 000d 4948 4452。

我想使用 ISO-8859-1 将这些字节解码成一个字符串,例如,“50”是“P”,“4E”是“N”,47 是“G”。

但是,我不能在 JavaScript 中这样做,因为解码方法“fromCharCode()”默认是 Unicode。

我能想到的是首先将二进制文件本身转换为 UTF-8。例如,ISO-8859-1 中的“50”代表 UTF-8 中的相同值“P”,所以“50”仍然是“50”,但 ISO-8859-1 中的“89”代表什么,我不知道如何选择 UTF-8 编码来代替它。

谁能提供一些关于这个转换功能的帮助?

【问题讨论】:

    标签: javascript character-encoding


    【解决方案1】:

    您可以使用TextDecoder 类。如果您的浏览器没有support it,您可以使用this polyfill

    let bytes = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 
                                0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52]);
    let decoder = new TextDecoder('iso-8859-1');
    console.log(decoder.decode(bytes));

    【讨论】:

    • 我对此很感兴趣。我不明白的是这部分: [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48, 0x44, 0x52] 我应该用我的数据替换它吗?
    • @Eagle1 是的。这些是需要被解析为 ISO-8859-1 的原始二进制字节。
    猜你喜欢
    • 1970-01-01
    • 2011-07-26
    • 2014-08-29
    • 2015-04-11
    • 1970-01-01
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多