Unicode Utf8编码让我感到困惑 让buf1=Buffer.from(“3”,“utf8”); 设buf2=缓冲区,从(“三ааааааааааааа1072; // //

Unicode Utf8编码让我感到困惑 让buf1=Buffer.from(“3”,“utf8”); 设buf2=缓冲区,从(“三ааааааааааааа1072; // //,unicode,utf-8,Unicode,Utf 8,为什么字符“3”在buf1中编码为“33”,而在buf2中编码为“d0 97”?因为3不是3,尽管与未经训练的眼睛相似。仔细看,你会发现其中的差别,无论多么细微 前者是Unicode码点U+0033-数字三(请参阅),而后者是U+0417-西里尔大写字母ZE(请参阅),以UTF-8编码为D097 俄语单词实际上是hello,发音(非常粗略,因为我只知道hello和再见,几十年前由一位俄罗斯女朋友教过)“Strasvoytza”,概念中没有“3”。第二个缓冲区的第一个字符是西里尔字母“Ze”,而不

为什么字符“3”在buf1中编码为“33”,而在buf2中编码为“d0 97”?

因为
3
不是
3
,尽管与未经训练的眼睛相似。仔细看,你会发现其中的差别,无论多么细微

前者是Unicode码点
U+0033-数字三
(请参阅),而后者是
U+0417-西里尔大写字母ZE
(请参阅),以UTF-8编码为
D097


俄语单词实际上是hello,发音(非常粗略,因为我只知道hello和再见,几十年前由一位俄罗斯女朋友教过)“Strasvoytza”,概念中没有“3”。

第二个缓冲区的第一个字符是西里尔字母“Ze”,而不是阿拉伯数字3

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>