2015-12-22 120 views
1

我有一個文本文件,文本像這樣:爲什麼我無法將以ANSI編碼的文件轉換爲UTF8?

025069;Zoppè di Cadore;BL;VEN;0437;32010;M189;271;http://www.comuni-italiani.it/025/069/ 

,如果我用記事本++打開,它說的編碼是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?了,我已經失去了一個char。我錯在哪裏?

+1

如果這只是一件事情,您可以將它轉換爲記事本中的UTF-8 – DGibbs

+0

它適合您嗎? 我遇到同樣的問題。我有一個SQL數據庫,我想用UTF-8提取導入/導出文件,但某些字符不能很好地顯示,例如「é」變成「,」。 我使用記事本+,我想將這些導入/導出文件添加到Prestashop。 我已經嘗試了幾種方法,但仍然無法使用。 你們能幫我嗎?也許可以直接在SQL中創建一些東西,但可惜我不是專家。 〜Maxence Boudaud – Christopher

回答

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了。將它作爲字節數組加載時,我們跳過這一部分。

您還需要使用ASCIIEncoding.Convert來轉換數據。

相關問題