我有UTF-8文件(瑞典语charactersåö字符).我读到这些:
List<MyData> myDataList = new List<MyData>();
string[] allLines = File.ReadAllLines(csvFile[0], Encoding.Default);
foreach (string line in allLines)
{
MyData myData = new MyData();
string[] words = line.Split(";");
myData.ID = words[0];
myData.Name = word[1];
myData.Age = words[2];
myData.Date = words[3];
myData.Score = words[4];
//Do something...
myDataList.Add(myData);
}
StringBuilder sb = new StringBuilder();
foreach (string data in myDataList)
{
sb.AppendLine(string.Format("{0},{1},{2},{3},{4}",
data.ID,
data.Name,
data.Age,
data.Date,
data.Score));
}
File.WriteAllText("output.txt", sb.ToString(), Encoding.ASCII);
Run Code Online (Sandbox Code Playgroud)
我在ansii中获得output.txt文件,但没有使用瑞典语字符.有人可以帮助我知道如何将文件数据从UTF-8保存到Ansii?谢谢.
您可能所说的"ANSII"¹是大多数西欧国家使用的代码页Windows-1252.
目前,您正在使用系统默认编码(可能是Windows-1252)读取该文件,并将其编写为ASCII仅定义前128个字符且不包含任何非英语字符(例如äåö)的文件:
string[] allLines = File.ReadAllLines(csvFile[0], Encoding.Default);
...
File.WriteAllText("output.txt", sb.ToString(), Encoding.ASCII);
Run Code Online (Sandbox Code Playgroud)
这都是错的.如果要将文件从UTF-8转换为Windows-1252,则需要读取为UTF-8并写为Windows 1252,即
string[] allLines = File.ReadAllLines(csvFile[0], Encoding.UTF8);
...
File.WriteAllText("output.txt", sb.ToString(), new Encoding(1252));
Run Code Online (Sandbox Code Playgroud)
¹拼写清楚ANSI; 但即使这样也不完全正确(引自维基百科):
从历史上看,Windows中使用短语"ANSI代码页"(ACP)来引用被视为本机的各种代码页.其目的是大多数都是ANSI标准,如ISO-8859-1.尽管Windows-1252是第一个也是迄今为止最流行的代码页,在Microsoft Windows用语中命名,但代码页从未成为ANSI标准.微软附属博客现在声称"用于表示Windows代码页的术语ANSI是一个历史参考,但现在仍然是在Windows社区中持续存在的误称."
| 归档时间: |
|
| 查看次数: |
7354 次 |
| 最近记录: |