如何获取UCS-2小端编码的字符串/整数标识传入Encoding.GetEncoding()
获取UCS-2小端编码的标识用于Encoding.GetEncoding()
刚好对.NET里的编码标识这块比较熟,给你梳理清楚UCS-2小端对应的可用标识,直接就能用到Encoding.GetEncoding()里:
- 字符串名称:你有几个清晰的选项可选:
"unicode":这是.NET里对应UCS-2小端(UTF-16LE)的标准名称,Encoding.GetEncoding("unicode")会直接返回目标编码实例。"utf-16le":更明确的名称,直接指定了小端字节序,可读性更强,推荐在配置里用这个,避免歧义。"utf-16":在.NET里,utf-16默认也是小端,但如果要严格匹配UCS-2小端,用前两个更稳妥。
- 整数代码页ID:对应的官方代码页编号是
1200,所以Encoding.GetEncoding(1200)也能得到完全一样的编码实例,适合配置里存数字的场景。
实际使用示例
假设你从配置文件里读取了编码标识,直接拿来构造StreamReader就行:
// 从配置读取编码名称(比如配置项值是"utf-16le") string encodingConfig = "utf-16le"; using (var reader = new StreamReader("targetfile.txt", Encoding.GetEncoding(encodingConfig))) { string fileContent = reader.ReadToEnd(); // 后续处理逻辑 } // 或者用代码页ID(配置项值是"1200") int codePage = 1200; using (var reader = new StreamReader("targetfile.txt", Encoding.GetEncoding(codePage))) { string fileContent = reader.ReadToEnd(); // 后续处理逻辑 }
额外说明
- UCS-2其实是UTF-16的子集,仅覆盖基本多语言平面(BMP)的字符。在.NET里,
Encoding.GetEncoding(1200)返回的实例对BMP外的字符会抛出异常,刚好符合严格UCS-2的需求。 - 如果遇到UCS-2大端的文件,对应的标识是代码页
1201或者字符串名称"utf-16be",别搞混了。
内容的提问来源于stack exchange,提问作者mishan
相关产品推荐
相关产品推荐

