System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName, System.Text.Encoding.Default);
rtxtMain.Text= sr.ReadToEnd();
sr.Close();
这样读取有中问的文件为什么有的会会乱码而有的不会,请教.
rtxtMain.Text= sr.ReadToEnd();
sr.Close();
这样读取有中问的文件为什么有的会会乱码而有的不会,请教.
文件的編碼不同,常見的編碼有ANSI、Unicode、Utf-8,等,根據文件頭,可以大體判斷出來。
有的文件汉字可以正确显示而有的不能,
难道同一个VS生成的cs文件编码也不一样??
using System.IO;public string LoadTextFile(string filename)
{
if (!File.Exists(filename)) return string.Empty;
FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
try
{
byte[] buffer = new byte[3];
int l = fs.Read(buffer, 0, buffer.Length);
if (l >= 2 && buffer[0] == 0xff && buffer[1] == 0xfe) // unicode
{
buffer = new byte[fs.Length - 2];
fs.Seek(2, SeekOrigin.Begin);
fs.Read(buffer, 0, buffer.Length);
return Encoding.Unicode.GetString(buffer);
} if (l >= 2 && buffer[0] == 0xfe && buffer[1] == 0xff) // unicodeFFFE
{
buffer = new byte[fs.Length - 2];
fs.Seek(2, SeekOrigin.Begin);
fs.Read(buffer, 0, buffer.Length);
return Encoding.BigEndianUnicode.GetString(buffer);
} if (l >= 3 && buffer[0] == 0xef && buffer[1] == 0xbb && buffer[2] == 0xbf) // utf8
{
buffer = new byte[fs.Length - 3];
fs.Seek(3, SeekOrigin.Begin);
fs.Read(buffer, 0, buffer.Length);
return Encoding.UTF8.GetString(buffer);
} // default
fs.Seek(0, SeekOrigin.Begin);
buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
return Encoding.Default.GetString(buffer);
}
finally
{
fs.Close();
}
}