我试图在网站上发布用Word编写的文章作为html,我有一个Windows客户端,将文章转换为html并将html发送到网站上的文件夹,然后我在IFrame中显示文章。但是在IE9中,图像不会显示,因为IE9会尝试将它们转换为矢量图形。我决定从负责这个的html中删除代码,这里开始我的问题。在我修改并保存文件后,我得到了垃圾字符,这些也显示在网页上。但是,如果我在notepad ++中手动编辑文件,我不会遇到同样的问题,如何使用C#读取保存在word中的文件作为html而不是获取这些垃圾字符?这是我的代码
private bool AdjustHtmlPageForIE9Images(FileInfo file)
{
bool success = true;
try
{
string content = File.ReadAllText(file.FullName);
//replace [if gte vml 1] with [if gte iesucksopd 1]
content = content.Replace("[if gte vml 1]", "[if gte iesucksopd 1]");
//replace [if !vml] with [if !iesucksopd]
content = content.Replace("[if !vml]", "[if !iesucksopd]");
//now write the file over
File.WriteAllText(file.FullName, content);
}
catch (Exception ex)
{
throw ex;
}
return success;
}
这会导致显示一些垃圾字符。
大家好,感谢所有回复,这就是我为解决这个问题所采取的措施
嗨大家好,感谢最后的回复,我不得不在FF中打开并检查编码,它是Western Windows-1252,然后作为SLaks sed传递GetEncoding(1252)在读取和写入操作这里是修改代码。
private bool AdjustHtmlPageForIE9Images(FileInfo file)
{
bool success = true;
try
{
Encoding encoding = Encoding.GetEncoding(1252);
string content = File.ReadAllText(file.FullName,encoding);
//replace [if gte vml 1] with [if gte iesucksopd 1]
content = content.Replace("[if gte vml 1]", "[if gte iesucksopd 1]");
//replace [if !vml] with [if !iesucksopd]
content = content.Replace("[if !vml]", "[if !iesucksopd]");
//now write the file over
File.WriteAllText(file.FullName, content, encoding);
}
catch (Exception ex)
{
throw ex;
}
return success;
}
IE9无法做到像IFrame中的单词显示html这样简单的事情并不奇怪,难怪它的受欢迎程度不断下降。
答案 0 :(得分:1)
您需要明确地将编码传递给ReadAllText
和WriteAllText
;否则,它将默认为UTF8。
通过Encoding.GetEncoding(1252)
。
答案 1 :(得分:0)
确保转换后的html文件是UTF-8或UTF-32编码,然后ReadAllText会正确检测到它。否则使用ReadAllText重载来提供转换后使用的编码参数。