Chr*_*ard 1 .net c# encoding utf-8
任何人都可以解释在新实例化的utf8编码上调用GetPreamble()与在Encoding类中提供的公共编码之间的区别吗?
byte[] p1 = Encoding.UTF8.GetPreamble();
byte[] p2 = new UTF8Encoding().GetPreamble();
Run Code Online (Sandbox Code Playgroud)
p1是正常的3字节utf-8前导码,但p2最终为空,这似乎非常错误.
区别在于Enconding的UTF8属性是以这种方式创建的
new UTF8Encoding(true)
Run Code Online (Sandbox Code Playgroud)
这表明encoderShouldEmitUTF8Identifier = true所以3字节前导码就在那里
并调用默认构造函数
new UTF8Encoding()
Run Code Online (Sandbox Code Playgroud)
这相当于
new UTF8Encoding(false)
Run Code Online (Sandbox Code Playgroud)
为了得到相同的结果:
byte[] p1 = Encoding.UTF8.GetPreamble();
byte[] p2 = new UTF8Encoding(true).GetPreamble();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2485 次 |
| 最近记录: |