如何将UTF16LE转换为字符串C#?

如何将UTF16LE转换为字符串C#?,c#,utf-16,C#,Utf 16,我有一个UTF16LE格式的文件 feff 0074 0065 0073 0074 基本上 试验 我试图读取该文件: using (FileStream stream = File.Open(fileName, FileMode.Open)) { byte[] b = new byte[stream.Length]; Encoding u16LE = Encoding

我有一个UTF16LE格式的文件

feff 0074 0065 0073 0074

基本上

试验

我试图读取该文件:

         using (FileStream stream = File.Open(fileName, FileMode.Open))
                {
                    byte[] b = new byte[stream.Length];
                    Encoding u16LE = Encoding.Unicode;
                    arrRaw.Add(u16LE.GetString(b));
                }
之后,我开始在另一个函数中读取这些字符串数组:

[![在此处输入图像描述][2][2]

所以它的输出就是象形文字。我不知道我做错了什么。此外,我试图从数组中的第三个字节开始读取,但结果是一样的

public static string Utf16ToUtf8Initial(string utf16String)
        {

            string utf8String = String.Empty;

            byte[] utf16Bytes = Encoding.Unicode.GetBytes(utf16String);
            byte[] utf8Bytes = Encoding.Convert(Encoding.Unicode, Encoding.UTF8, utf16Bytes);


            utf8String = Encoding.UTF8.GetString(utf8Bytes);
            return utf8String;
        }

你用UTF8表示UTF16,我想这是错误的。完全不要使用UTF8,您所需要的是Unicode,即UTF16。如果文件很小,file.ReadAllText应该可以。请将代码作为文本而不是图像插入。字符串在内存中存储时使用Unicode编码之一。但是我不知道是哪一个,而且它可能会受到更改/变量设置的影响。关心内存中字符串的编码是没有意义的。您只需要在读取或写入代码之外的内容时才需要考虑这个问题。@IlyaPribil对于大型文件,请使用File.OpenText