Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.0k views
in Technique[技术] by (71.8m points)

nodejs的buffer数组中文编码是如何转换的?

buffer中转换数字其实很好理解。
例如:<buffer 0x36>,而0x36对应Utf8中的‘6’;
再例如:<buffer 0x36 0x75>,则对应'6u';
这样一值一码还能对应上。
但是中文就想不通了。
例如:<buffer e5 b0 8f>,对应的'小'。
utf8中,'小'的charCode为23567,也就是0x5c0f,但buffer中为e5 b0 8f。
所以想知道这是怎么计算的?还是说buffer有自己的一套编码规则?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

buffer仅仅是数据数组序列,比如0x36是一个字符,0xe5,0xb0,0x8f一起表示一个字符,这些对buffer来说其实没有区别,只是存储的字节数据多少的问题,具体对这些数据如何处理其实仅仅是发生在存入和取出的时候,存入时本质来说就是把某个字符数据按编码转成字节数据序列,取出时则是相反的过程而已。

而utf-8中对每个中文字符已经有固定的编码,在buffer存入时,只是把这些编码查询出来(在系统支持下),然后按字节存入而已,取出是就是这个过程的逆过程。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...