在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

C#获取指定文本文件的编码格式

C# 清风 1924℃ 0评论

在某些情况下对文本文件进行读取会出现乱码,这种情况是因为指定的文本文件的编码类型不是系统默认的编码类型或者不是读取时指定的编码类型。解决这种出现乱码的情况可以先获取指定文本文件的编码类型,然后在进行内容的读取。这样尽可能的避免读取文本文件时出现乱码的机率。代码如下:


/// <summary>
/// 获取指定文件的编码
/// 以防止在不知道文件编码格式的情况下处理文件而造成的乱码问题
/// </summary>
/// <param name="filename">文件路径</param>
/// <returns></returns>
public System.Text.Encoding GetFileEncodeType(string filename) 
{
	if (!File.Exists(filename)) 
	{
		return System.Text.Encoding.Default;
	}
	System.Text.Encoding ReturnReturn = null;
	System.IO.FileStream fs = null;
	System.IO.BinaryReader br = null;
	try 
	{
		fs = new System.IO.FileStream(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
		br = new System.IO.BinaryReader(fs);
		byte[] buffer = br.ReadBytes(2);
		if (buffer.Length > 0 && buffer[0] >= 0xEF) 
		{
			if (buffer[0] == 0xEF && buffer[1] == 0xBB) 
			{
				ReturnReturn = System.Text.Encoding.UTF8;
			} else if (buffer[0] == 0xFE && buffer[1] == 0xFF) 
			{
				ReturnReturn = System.Text.Encoding.BigEndianUnicode;
			} else if (buffer[0] == 0xFF && buffer[1] == 0xFE) 
			{
				ReturnReturn = System.Text.Encoding.Unicode;
			} else 
			{
				ReturnReturn = System.Text.Encoding.Default;
			}
		} else if (buffer.Length > 0 && buffer[0] == 0xe4 && buffer[1] == 0xbd) //无BOM的UTF-8 
		{
			ReturnReturn = System.Text.Encoding.UTF8;
		} else 
		{
			ReturnReturn = System.Text.Encoding.Default;
		}
	}
	catch (Exception ex) 
	{
		ReturnReturn = System.Text.Encoding.Default;
		Log.WriteLog(ex.ToString());
	}
	finally 
	{
		if (br != null) 
		{
			br.Close();
		}
		if (fs != null) 
		{
			fs.Close();
			fs.Dispose();
		}
	}
	return ReturnReturn;
}

 

 



转载请注明:清风亦平凡 » C#获取指定文本文件的编码格式

喜欢 (4)or分享 (0)
支付宝扫码打赏 支付宝扫码打赏 微信打赏 微信打赏
头像
发表我的评论
取消评论

CAPTCHA Image
Reload Image
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址