请问.net 的Encoding.UTF8.GetBytes和Encoding.Unicode.GetBytes分别作了什么?

直接在vs2015里面硬编码一个string如string="123456",传入函数
然后sha加密取base64值

发现分别用Encoding.UTF8.GetBytes和Encoding.Unicode.GetBytes解码string后使用的结果不一样.
可只涉及到ascii值的话utf8和unicode值应该一样吧?怎么会结果不同?

阅读 9.2k
3 个回答

不一样啊
unicode 是定长编码,每个字符都是16位
utf-8 是变长编码,可能是 8位 - 32位不等

对于 ascii 的值来说,utf-8 都是8位的编码,unicode 是16位,当然不一样啦

新手上路,请多包涵

可以对比下Encoding.Unicode.GetBytes和Encoding.UTF8.GetBytes各自返回的字节长度

微软在一些地方把"带BOM的UTF-16LE" (不正确地) 简称为"Unicode"。比如windows记事本。这个API可能也是。