如何阅读与ANSI编码和非英语字母文本文件?(How to read text files with

2019-06-27 09:37发布

我有一个包含非英语字符,并使用非英语代码页保存在ANSI编码的文件。 我怎样才能读取C#这个文件并正确地看到文件内容?

不工作

StreamReader sr=new StreamReader(@"C:\APPLICATIONS.xml",Encoding.ASCII);
var ags = sr.ReadToEnd();
sr=new StreamReader(@"C:\APPLICATIONS.xml",Encoding.UTF8);
ags = sr.ReadToEnd();
sr=new StreamReader(@"C:\APPLICATIONS.xml",Encoding.Unicode);
ags = sr.ReadToEnd();

工作,但我需要知道什么是代码页提前,这是不可能的。

sr=new StreamReader(@"C:\APPLICATIONS.xml",Encoding.GetEncoding(1252));
ags = sr.ReadToEnd();

Answer 1:

 var text = File.ReadAllText(file, Encoding.GetEncoding(codePage));

代码页的列表: http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx



Answer 2:

如果我没有记错的XMLDocument.load方法(String)方法总是假定UTF-8,无论XML编码。 你将不得不创建一个StreamReader与正确的编码,并使用它作为参数。

xmlDoc.Load(new StreamReader(
                     File.Open("file.xml"), 
                     Encoding.GetEncoding("iso-8859-15"))); 

我只是碰到KB308061跌跌撞撞从微软。 有一个有趣的一段话:指定在XML文档的XML声明部分编码声明。 例如,以下声明指示该文件是在UTF-16 Unicode编码格式:

<?xml version="1.0" encoding="UTF-16"?>

请注意,此宣言时指定XML文档的编码格式,并不会修改或控制数据的实际的编码格式。

链接源:

XMLDocument.load方法()方法未能解码€(欧元)



Answer 3:

你得到的问号金刚石字符时您文本文件采用高ANSI编码 - 这意味着它使用127和255之间的字符这些字符具有第八(即最显著)位设置。 当ASP.NET读取文本文件它假定UTF-8编码,而且大多数显著位有特殊的意义。

您必须强制ASP.NET来解释文本文件作为高ANSI编码,告诉它的代码页1252:

String textFilePhysicalPath = System.Web.HttpContext.Current.Server.MapPath("~/textfiles/MyInputFile.txt");
String contents = File.ReadAllText(textFilePhysicalPath, System.Text.Encoding.GetEncoding(1252));
lblContents.Text = contents.Replace("\n", "<br />");  // change linebreaks to HTML


Answer 4:

using (StreamWriter writer = new StreamWriter(File.Open(@"E:\Sample.txt", FileMode.Append), Encoding.GetEncoding(1250)))  ////File.Create(path)
        {
            writer.Write("Sample Text");
        }


文章来源: How to read text files with ANSI encoding and non-English letters?