2011-05-31 70 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