我正在使用以下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:修复了,我回答了下面的修复。
答案 0 :(得分:1)
好的,问题是浏览器没有将响应解释为UTF-8,修复为:
resp.setContentType("text/html; charset=UTF-8");
答案 1 :(得分:0)
€
符号未进入浏览器。如果您查看源,它显示的是?我希望在html中看到€
代码。如果您查看此(http://jsfiddle.net/gTLKq/)JSFiddle代码,它会清楚地显示您正在使用的实体值中的欧元符号。
因此,JSoup正在修改您的代码。你是在清理JSoup输出,还是做了其他可能导致JSoup这样做的事情?