【问题标题】:Converting unicode to hex将unicode转换为十六进制
【发布时间】:2016-05-13 21:39:47
【问题描述】:

我的 js 文件中有西里尔字母,其字符集是 UTF-8,没有 BOM。 如何获取我的第一个字符的 unicode 表的十六进制索引? 单词“Абв”和结果必须返回十六进制代码“0x0410”。

我试过这段代码,但它返回错误的结果:

var code = "А".charCodeAt(0);
var codeHex = code.toString(16).toUpperCase();
console.log(code, codeHex);

【问题讨论】:

    标签: javascript utf-8 character-encoding utf chars


    【解决方案1】:

    请注意,在您的 console.log(code, codeHex); 中,codecodeHex 两个值之间没有空格,因此您会看到一个看似很大的值 (1040410)。

    像这样分开:

    console.log(code, ' ', codeHex);
    

    如果你想要一个漂亮的十六进制格式,这样做:

    console.log(code, ' ', '0x' + ('0000' + codeHex).substr(-4));
    

    片段:

    var code = "А".charCodeAt(0);
    var codeHex = code.toString(16).toUpperCase();
    document.write(code, ' ', '0x' + ('0000' + codeHex).substr(-4));

    【讨论】:

    • 嗯,当我在控制台中输入这个 sn-p 时,它的工作很完美。但是当我从我的文件中使用它时,它总是返回:“1056 0x0420”。
    • 我将文件的字符集更改为 ANSI 并且它可以工作。但为什么它不适用于 UTF-8?
    • 设置你的HTML文件的字符集:添加<head><meta charset="UTF-8"></head>并同时将其保存为UTF-8编码(这样做后检查字符是否仍然相同,因为某些字符可能无法生存开关)。
    • 没关系,我查过了,是UTF-8。但仍然无法使用 UTF-8
    • 你还在做什么?我刚刚从头开始创建了这样一个文件,它给出了正确的结果。