C# Encoding.GetEncoding ucs 2小端

C# Encoding.GetEncoding ucs 2小端,c#,C#,我正试图找到一个字符串或(不太理想的)UCS-2 little-endian的int表示形式,以输入到Encoding.GetEncoding() 我之所以要查找此信息,是因为我正在使用StreamReader来读取文件的内容,并且我想使用Encoding.GetEncoding来构造它 原因是我正在读取几个不同的文件,这些文件的编码是可变的,我需要能够在配置中指定用于哪个文件的编码。UCS-2可以被视为UTF-16的子集,因此任何支持UTF-16的解码器也应该能够处理UCS-2;不同之处在于U

我正试图找到一个字符串或(不太理想的)UCS-2 little-endian的int表示形式,以输入到
Encoding.GetEncoding()

我之所以要查找此信息,是因为我正在使用
StreamReader
来读取文件的内容,并且我想使用
Encoding.GetEncoding
来构造它


原因是我正在读取几个不同的文件,这些文件的编码是可变的,我需要能够在配置中指定用于哪个文件的编码。

UCS-2可以被视为UTF-16的子集,因此任何支持UTF-16的解码器也应该能够处理UCS-2;不同之处在于UCS-2并没有覆盖整个unicode范围,因此有一些附加值可以用UTF-16表示,但不能用UCS-2表示。如果文件是由只知道UCS-2的编码器编写的,我们就不应该期望在这里看到这些值

这与说您可以使用UTF-8解码器读取以纯ASCII编写的数据(这里的“纯”是指7位ASCII,而不是使用第8位的扩展代码页)几乎是一样的

因此,任何:

Encoding direct=Encoding.Unicode;
Encoding byCode=Encoding.GetEncoding(1200);
Encoding byName=Encoding.GetEncoding(“Unicode”);

在这里应该可以正常工作。

您是否尝试过上面列出的“utf-16”?我意识到UCS-2和UTF-16不一样,但我强烈怀疑它对你有用。@jdweng你的评论让我有点困惑;将
编码
流媒体阅读器
一起使用是完全正常和常见的;不确定
Array.Find
是从哪里来的…我的理解是UTF-16确实应该能够读取UCS-2的输入-因为它在UCS-2可以处理的代码点上基本上是向后兼容的,所以:对于读取,
Encoding.Unicode
应该可以在这里正常工作?或者至少值得一试。与
GetEncoding
:这是代码页
1200
(或
1201
,用于big-endian)-或按名称:
“Unicode”
(或
“Unicode(big-endian)”
)@jdweng我没有看到任何关于OP试图推断编码的信息here@jdweng嘿,我们应该找到一个未使用但有效的代码点,可能是U+FEFF,然后以所选的编码在文件的开头写入-然后读者可以检查前几个字节,看看他们是否可以通过任何编码构造代码点,然后:瞧!现在我们怎么能把这样的事情叫做。。。它就像一个标记,指示字节的顺序。。。