如何让€在网页上正确显示?

时间:2011-03-29 09:47:03

标签: html

此页面页脚中的欧元符号无法正确显示

http://fundcentre.newireland.ie/

纠正此问题的最佳方法是什么?

编辑:此html由第三方提供。我们接受它,将它包装在我们的内容中,并呈现页面

再次编辑:只是查看代码,我可以看到我们将第三方HTML读入我们的解决方案中,其中包含以下内容:

wrapperHtml = System.IO.File.ReadAllText(sWrapperLocation, Encoding.GetEncoding("iso-8859-1")); ..所以我们把它作为一个编码读取并将其渲染为另一个..

5 个答案:

答案 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代码:&#8364;&euro;