Windows phone 8 WindowsPhone8,StreamReader如何正确处理GB编码文本?
我将一个GB2312编码的文本文件从PC复制到设备的独立存储器中。我有以下代码来读取它。设备的语言设置为简体中文。然而,读回的文本除了数字和字母外都是垃圾。似乎编码设置不正确。但是,我可能不会只处理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
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(“??”)