【发布时间】:2020-01-28 04:29:02
【问题描述】:
我对将 unicode 字符转换为十六进制值感到有点困惑。
我正在使用这个网站来获取字符的十六进制值。 (https://www.branah.com/unicode-converter)
如果我输入“A”并转换,那么我会得到类似的结果:
0041 --> UTF-16
00000041 --> UTF-32
41 --> UTF-8
00065 --> Decimal Value
上面的输出很有意义,因为我们可以将所有这些十六进制值转换为 65。
现在,如果我输入“Я”(不带引号)并转换它,那么我会得到类似的值。
042f --> UTF-16
0000042f --> UTF-32
d0af --> UTF-8
01071 --> Decimal Value
这个输出对我来说没有意义,因为并非所有这些十六进制值都转换回 1071。
如果您将 d0af 转换回十进制值,您将得到 53423。
这让我很困惑,我一直在网上搜索有关此转换的答案,但到目前为止我还没有找到任何好的答案。
所以,我想知道这里是否有人可以提供帮助。 (这意味着很多)//提前致谢。
您还可以在下面的链接中查看此二进制转换的示例。(您能解释一下为什么上一个示例中的 utf-8 二进制值不同吗??)
【问题讨论】:
-
您对字符编码的工作原理了解得太多了。他们每个人都有自己的标准。您应该比较标准,而不是从样本输出中得出结论。例如,UTF-16 的标准会告诉您它也是可变长度编码,????。
-
嗨@TomBlodget,你是对的,它们都是可变长度编码 UTF-8 和 UTF-16。问题是我正在更多地了解它们,因为我是一名计算机科学专业的学生,我喜欢了解这些东西的幕后工作。
-
很好,只是在外面小心点。例如,您链接的站点显示“\x61 \xe4\xb8\xad \xd0\xaf”是UTF-8。它不是 Unicode 文本讨论的标准符号,它在不同的语言中意味着不同的东西。编译器的执行字符集为 UTF-8 的 C 或 C++ 字符串文字会很好。它可以作为 Python 字节字符串,但不能作为字符串。这将意味着 JavaScript 中的不同字符。在许多语言中,它是无效的。
标签: javascript html node.js utf-8 computer-science