怎么取得一个TXT文件的编码方式?
现在的文本文件的编码方式到底有哪几种?特征码都分别是什么,希望高手给解答下。
我编写了如下的程序,结果还是有很多文本文件的编码是乱码。
但是用editplus打开,就是正常的。
先贴出我的程序片段:
//扩展名未必是txt,但是肯定是以本文方式记录的。这个程序是反复调用的,处理的文件肯定超过几百个,所以,大家不要建议我用UE打开,然后分别看每个文件的编码。
string url = msFileUrl.Text + msFileName.Text;
FileStream str2 = new FileStream(@url, FileMode.Open);
byte[] arr = new byte[20971520];//一般不会有超过20兆的文本文件,但是,肯定超过2K。
string str = null;
str2.Read(arr, 0, 20971520);
str2.Close();
string s = "";
for (int i = 0; i < 500; i++)
{
s += Convert.ToInt32(arr[i].ToString()).ToString("X");
}
string filetype = "";
Encoding myencode = null;
if (s.Contains("EFBB"))
{
filetype = "utf8";
myencode = Encoding.UTF8;
str = myencode.GetString(arr);
}
else if (s.Contains("FFFE"))
{
filetype = "Unicode";
myencode = Encoding.Unicode;
str = myencode.GetString(arr);
}
else if (s.Contains("FEFF"))
{
filetype = "Unicode big endian";
myencode = Encoding.BigEndianUnicode;
str = myencode.GetString(arr);
}
else
{
filetype = "ANSI";
myencode = Encoding.Default;
str = myencode.GetString(arr);
}
int strlen = str.Length;
for (int i = 0; i < strlen; i++)
{
if (str[i].ToString() == "\0")
{
str = str.Substring(0, i);
break;
}
}
restext.Text = str;
//myencode 是有用的,我后面还要用同样的编码方式,生成文件。
这个程序其实,就是打开现有文件,在指定的位置插入几行文字,然后再把那个文件覆盖掉。(这些都实现了,就是遇到有些文件包含的中文时,会出乱码)
我通过EditPlus选择编码,发现最少有60种编码方式,但是除了网上流行的那几个外,我都不知道。
想让大家补充的就是,还有什么编码我没有考虑到的,最好大家能给个比较全面的。
分数不够的话,可以再加。