我有一个文本文件,文本如下:
025069;Zoppè di Cadore;BL;VEN;0437;32010;M189;271;http://www.comuni-italiani.it/025/069/
如果我用Notepad ++打开,它说编码是ANSI。所以,我正在尝试将其转换并保存为UTF8:
var ABSfilePath = Server.MapPath(UiUtils.GetPath + "/utility/listacomuni.txt");
var myString = File.ReadAllText(ABSfilePath);
byte[] bytes = Encoding.Default.GetBytes(myString);
myString = Encoding.UTF8.GetString(bytes);
File.WriteAllText(Server.MapPath(UiUtils.GetPath + "/utility/listacomuni2.txt"), myString);
但结果是:
025069;Zopp? di Cadore;BL;VEN;0437;32010;M189;271;http://www.comuni-italiani.it/025/069/
Zoppè
现在是Zopp?
,我丢失了一个字符。我哪里错了?
答案 0 :(得分:1)
问题似乎是在阅读文件时,请尝试:
var ABSfilePath = Server.MapPath(UiUtils.GetPath + "/utility/listacomuni.txt");
var myBytes = File.ReadAllBytes(ABSfilePath);
var utf8Bytes byte[] = ASCIIEncoding.Convert(ASCIIEncoding.ASCII, UTF8Encoding.UTF8, myBytes);
File.WriteAllBytes(Server.MapPath(UiUtils.GetPath + "/utility/listacomuni2.txt"), utf8Bytes);
当您使用File.ReadAllBytes
阅读字符串时,它会将其加载为UTF-8
。将它加载为Byte-Array,我们跳过这部分。
您还需要使用ASCIIEncoding.Convert
来转换数据。