.NET:将.doc转换为.htm会产生时髦的角色

时间:2008-11-07 18:45:51

标签: c# encoding

我使用MS Word自动化将.doc保存到.htm。如果.doc文件中有子弹字符,它们可以很好地保存到.htm,但是当我尝试将.htm文件读入字符串时(因此我可以随后将其作为字符串发送到数据库以进行最终存储,而不是一个blob),根据用于加载到字符串中的编码,子弹被转换为问号或其他字符。

我用它来阅读文字:

string html = File.ReadAllText(myFileSpec);

我也尝试过使用StreamReader,但得到相同的结果(可能是由File.ReadAllText在内部使用)。

我也尝试在File.ReadAllText的第二个重载中指定每种类型的编码:

string html = File.ReadAllText(originalFile, Encoding.ASCII);

我已经尝试了编码类型的所有可用枚举。

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

在我的系统上(使用美国英语)Word将* .htm文件保存在Windows-1252代码页中。如果您的系统使用该代码页,那么您应该将其视为。

string html = File.ReadAllText(originalFile, Encoding.GetEncoding(1252));

但是,无论您使用视图,结果都可能为您创建问号,所以请务必检查并确认。

答案 1 :(得分:0)

您是否尝试以二进制模式打开文件?如果你在测试模式下打开,我认为它会砍掉unicode字符。

答案 2 :(得分:0)

Word .doc.html转换的问题不是将问题标记转为问号(而且与File.ReadAllText或{{1}没有任何关系等等)?

即。当它到达StreamReader时,它已经是一个问号。

当我在Word 2003中将简单的简单Word列表转换为HTML时,我得到了

File.ReadAllText

它很难看,但它不包含任何可能成为问号的内容

答案 3 :(得分:0)

HTML文件中的这些字符是什么样的?此文件的编码声明是什么(在元标记“Content-Type”中)?理想情况下,这些字符应转换为实体或UTF-8字符 回答这些问题可能会引导您找到解决方案......: - )

答案 4 :(得分:0)

好吧,显然我在第一次发言中撒了谎。我以为我已经尝试了所有编码,但我没试过这个:

data = File.ReadAllText(tempFile, Encoding.Default);

你认为你没有指定编码的这种方法的重载可以正常工作,期望默认编码是,Encoding.Default。但是,它实际上默认使用Encoding.UTF8。希望这有助于其他人。