为什么欧元符号在此网页中无法正常显示?

时间:2012-01-10 22:36:23

标签: java html jsoup

我正在使用以下JSoup代码来呈现此货币:

currencySpan.html("€" + currencyFormat.format(estimatedValue));

但是,如果您访问http://www.lastcalc.com/pmGgp1QR以查看此输出,则会显示“?”欧元符号应该在(在19.164值之前)。我在Chrome和Safari中都看到了这一点。

为什么此符号无法正确显示?

编辑:人们指出这不是浏览器问题,而是?正在服务。基本上我使用JSoup的Element.html()来设置文本(包括%euro;),然后从那里我使用JSoup将其渲染为一个字符串,然后返回到浏览器(直接在页面首页加载,或者如果页面被编辑,则作为AJAX JSON调用的一部分。)

这是返回文档的代码(resp是HttpServletResponse):

resp.setContentType("text/html");
resp.getWriter().append(doc.toString());

edit2:我遇到了System.out.println(currencySpan);在那里,当然,Java打印:

<span class=" currency">€19.164</span>

奇怪的是,JSoup似乎已经转换了&amp;欧元;到实际的符号,但在某些时候,它没有进入浏览器。

如何确保浏览器将servlet返回的内容视为UTF-8?

edit3:修复了,我回答了下面的修复。

2 个答案:

答案 0 :(得分:1)

好的,问题是浏览器没有将响应解释为UTF-8,修复为:

resp.setContentType("text/html; charset=UTF-8");

答案 1 :(得分:0)

&euro;符号未进入浏览器。如果您查看源,它显示的是?我希望在html中看到&euro;代码。如果您查看此(http://jsfiddle.net/gTLKq/)JSFiddle代码,它会清楚地显示您正在使用的实体值中的欧元符号。

因此,JSoup正在修改您的代码。你是在清理JSoup输出,还是做了其他可能导致JSoup这样做的事情?