Windows phone 8 WindowsPhone8,StreamReader如何正确处理GB编码文本?

Windows phone 8 WindowsPhone8,StreamReader如何正确处理GB编码文本?,windows-phone-8,encoding,streamreader,Windows Phone 8,Encoding,Streamreader,我将一个GB2312编码的文本文件从PC复制到设备的独立存储器中。我有以下代码来读取它。设备的语言设置为简体中文。然而,读回的文本除了数字和字母外都是垃圾。似乎编码设置不正确。但是,我可能不会只处理GB代码。代码有什么问题?谢谢 string fileName = "周杰伦-听妈妈的话.lrc"; using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplicati

我将一个GB2312编码的文本文件从PC复制到设备的独立存储器中。我有以下代码来读取它。设备的语言设置为简体中文。然而,读回的文本除了数字和字母外都是垃圾。似乎编码设置不正确。但是,我可能不会只处理GB代码。代码有什么问题?谢谢

            string fileName = "周杰伦-听妈妈的话.lrc";

        using (IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (StreamReader sr = new StreamReader(store.OpenFile(fileName, FileMode.Open, FileAccess.Read), true))
            {
                while (true)
                {
                    String line = sr.ReadLine();
                    if (line == null)
                        break;
                }
            }
        }
您是否尝试过使用包含文件正确编码的

public StreamReader(
    Stream stream,
    Encoding encoding
)
字符编码由encoding参数设置,并且 使用默认缓冲区大小。StreamReader对象尝试 通过查看流的前三个字节来检测编码。 它会自动识别UTF-8、little-endian Unicode和 如果文件以适当的字节开头,则为大端Unicode文本 订单标记。否则,将使用用户提供的编码。见 Encoding.GetPreamble方法以获取详细信息


我正在使用以下假设检测编码的构造函数:publicstreamreader(Stream-Stream,booldetatencodingfromteordermarks),因为这是真的,我希望它检测到正确的编码,但事实并非如此。如果手动设置为中文GB 2312,我应该输入什么参数?(在你的版本中?)Thanks@thsieh它说,
detectencodingfromtbyteordermarks
,只有UTF-8、UTF-16和UTF-32有字节顺序标记。。因此,它无法检测任何其他编码。而且,您永远无法可靠地检测编码,因为您知道编码,所以必须显式地使用它来读取文件。谢谢。好啊但是,为了获得GB2312的正确编码,我应该做些什么呢?StreamReader sr=新的StreamReader(store.OpenFile(fileName,FileMode.Open,FileAccess.Read),Encoding.GetEncoding(“??”)