我使用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);
我已经尝试了编码类型的所有可用枚举。
有什么想法吗?
答案 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。希望这有助于其他人。