如何知道某个文本文件用的是何种字符编码
由于读取文本文件时,老是碰到乱码问题,所以只好用以下方法来获取正确的文本,本来 Encoding.Default在Visual Studio2005就已正常运行,没想转到Visual Studio2008上来,就出问题了。
问题是这样的,
我事先将SQL代码存在一个文件中,需要时根据“FileName”指定的文件调出SQL代码,交给SQLCommnad执行。转到VS2008后,以前在VS2005中编辑并保存的文本文件可以照旧读取,可是在VS2008中新写的文本就无法正常读出,我将Encoding的所有编码都度了个遍,只有Encoding.UTF8可以比较正常地读取文本,但读出来的文本前面会出现个乱码——我在VS2008中开头是“Select……”,结果出来的是一个乱码+“elect".我用“记事本”打开在VS2008中创建的文本却可以正常显示,真不知道VS2008的文本编辑器用的是编码存储文本的。
所以,我想在程序中加入识别文本编码的功能来解决这个问题,(先识别出文本的编码方式,再根据识别出的文本编码方式采用相应的文本编码读取文件内容。)
private void button1_Click(object sender, EventArgs e)
{
String SQLCode;
Encoding defaultEncode = Encoding.UTF8;//.ASCII;//.Unicode;//.Default;
byte[] bytes = File.ReadAllBytes(FileName); //unicode.GetBytes(unicodeString);
char[] strChars = new char[defaultEncode.GetCharCount(bytes, 0, bytes.Length)];
defaultEncode.GetChars(bytes, 0, bytes.Length, strChars, 0);
SQLCode = defaultEncode.GetString(bytes);
richTextBox1.Text = SQLCode;
}
另外补充点其他情况供参考:
我直接用“记事本”写的内容,用这段代码可以正确地读取,在VS2008中用“添加-新建项-文本文件”建立的文件写同样的内容,运行程序就会把字符串的头一个字符变成乱码。
最好能给一段识别文本编码方式的代码,实在不行告诉我如何设定VS2008文本编辑器的编码方式也给分!