2011-05-31 187 views
1

解析某些文檔時,我得到字符代碼146,它實際上是一個ANSI編號。在寫入文本文件時,沒有顯示任何內容。如果我們將字符編碼爲Unicode編號8217,則字符顯示正常。ansi to unicode conversion

任何人都可以給我關於如何將ANSI編號146轉換爲C#中的Unicode 8217的建議。

參考:http://www.alanwood.net/demos/ansi.html

感謝

+0

你正在閱讀文件嗎?你可以設置編碼,當你打開文件閱讀... – tofutim 2011-05-31 07:21:01

回答

8

「ANSI」 實在是用詞不當 - 有許多編碼通常被稱爲 「ANSI」。但是,如果你確定你需要的代碼頁1252,您可以使用:

Encoding encoding = Encoding.GetEncoding(1252); 
using (TextReader reader = File.OpenText(filename, encoding)) 
{ 
    // Read text and use it 
} 

Encoding encoding = Encoding.GetEncoding(1252); 
string text = File.ReadAllText(filename, encoding); 

這對文件 - 寫入文件是同樣的想法。基本上,當您從二進制(例如文件內容)轉換爲文本時,請使用適當的Encoding對象。

+0

嗨喬恩, 謝謝你的詳細信息。 實際上,我從文檔中只獲取字符代碼(146),它是一個PDF文檔,而不是文本文件。因此我需要將代碼轉換爲相應的文本。 所以,你可以給我一個關於如何將代碼說,146到8712,而不是使用TextReader類的想法。 – user438959 2011-05-31 08:43:58

+0

@ user438959:這不太清楚你的意思。 PDF閱讀器應該照顧你的編碼。如果它應用了錯誤的編碼,它基本上太晚了 - 你很容易就已經丟失了數據。 – 2011-05-31 09:01:22

+0

我從PDF中提取文本。字符的編碼是winansi編碼,字符代碼是146(右單引號)。如何將字符寫入只有字符代碼的文本文件(146)。 – user438959 2011-05-31 09:07:27