utf8编码让我感到困惑

时间:2020-08-17 08:22:45

标签: unicode utf-8

let buf1 = Buffer.from("3", "utf8");

let buf2 = Buffer.from("Здравствуйте", "utf8");

// <Buffer 33>

// <Buffer d0 97 d0 b4 d1 80 d0 b0 d0 b2 d1 81 d1 82 d0 b2 d1 83 d0 b9 d1 82 d0 b5>

为什么在buf1中char'3'编码为'33'而在buf2中为何将'd0 97'编码为

2 个答案:

答案 0 :(得分:2)

尽管3不是З,尽管与未经训练的眼睛相似。仔细观察,您会发现其中的区别,尽管微妙。

前者是Unicode代码点U+0033 - DIGIT THREE(请参阅here),而后者是U+0417 - CYRILLIC CAPITAL LETTER ZE(请参阅here),在UTF-8中编码为{{1 }}。

俄语单词实际上是你好,发音(非常,因为我只知道打招呼,​​再见,是由俄罗斯女友很多教的十年前)“ Strasvoytza”,概念中的任何地方都没有“三个”。

答案 1 :(得分:0)

第二个缓冲区的第一个字符是西里尔字母“ Ze” https://en.m.wikipedia.org/wiki/Ze_(Cyrillic),而不是阿拉伯数字3 https://en.m.wikipedia.org/wiki/3

相关问题