此页面页脚中的欧元€
符号无法正确显示
http://fundcentre.newireland.ie/
纠正此问题的最佳方法是什么?
编辑:此html由第三方提供。我们接受它,将它包装在我们的内容中,并呈现页面
再次编辑:只是查看代码,我可以看到我们将第三方HTML读入我们的解决方案中,其中包含以下内容:
wrapperHtml = System.IO.File.ReadAllText(sWrapperLocation, Encoding.GetEncoding("iso-8859-1"));
..所以我们把它作为一个编码读取并将其渲染为另一个..
答案 0 :(得分:2)
这看起来像是在ISO-8859-1上下文(或其他一些单字节编码)中以某种方式解释的UTF-8数据。无论您使用什么来读取第三方源,都可能错误地将数据解释为单字节,而实际上它是UTF-8。
这是关于在不了解您的设置的情况下可以说的所有内容。
修改:为什么通过使用实体来修复此问题是一个坏主意,从我的评论中复制出来:
问题不仅限于欧元字符,而是适用于ISO-8859-1范围之外的所有字符。这意味着,虽然你可以愉快地取代欧元而没有任何真正的损害,但是你的数据中出现了中文或西里尔字符的瞬间,你将没有任何实体可以将其转换为。您必须实时将完全健康的UTF-8内容转换为其数字实体,以避免必须修复编码问题。那真是疯了。
答案 1 :(得分:0)
€
是您要查找的实体
答案 2 :(得分:0)
使用HTML编码;得到一个€{type €
答案 3 :(得分:0)
您正在使用:
wrapperHtml = System.IO.File.ReadAllText(sWrapperLocation, Encoding.GetEncoding("iso-8859-1"));
尝试将其更改为:
wrapperHtml = System.IO.File.ReadAllText(sWrapperLocation, System.Text.UTF8Encoding);
这应该保持正确的多字节字符。
修改强> 你也可以一起删除第二个参数,因为它将保持原始编码,无论它是什么。
<强>更新强> 我知道它的邪恶,但试试这个。如果它可以工作,编码问题就在您的最后,某处,如果它不起作用,则编码问题与文件或文件的位置有关。
wrapperHtml = HttpUtility.HtmlEncode(System.IO.File.ReadAllText(sWrapperLocation));
以上行将捕获并编码需要用于html编码的多字节和单字节字符。目前,如果它们在您的代码中(在此行之后),服务器,传输或浏览器,以及doc类型和许多其他内容,它将需要编码问题。如果它有效,您知道该文件的格式有效,并且您的编码问题在文件之后的某个位置并且您在文件中读取。
答案 4 :(得分:-1)
使用HTML代码:€
或€