Jsp JSTL格式化货币不一致——ResourceRequest失败,其他地方成功
我正在开发SpringJSR286portlet应用程序。区域设置由登录时加载的默认语言设置驱动 然后我需要通过portlet进行货币格式化。例如,我执行以下操作:Jsp JSTL格式化货币不一致——ResourceRequest失败,其他地方成功,jsp,spring-mvc,jstl,portlet,Jsp,Spring Mvc,Jstl,Portlet,我正在开发SpringJSR286portlet应用程序。区域设置由登录时加载的默认语言设置驱动 然后我需要通过portlet进行货币格式化。例如,我执行以下操作: <fmt:setLocale value="en_IE" /> result: <fmt:formatNumber type="currency" value="324.00" currencyCode="EUR" /> 除了在应用程序中执行@ResourceMapping请求时。在这种情况下,仅在这里,我
<fmt:setLocale value="en_IE" />
result: <fmt:formatNumber type="currency" value="324.00" currencyCode="EUR" />
除了在应用程序中执行@ResourceMapping请求时。在这种情况下,仅在这里,我得到:
result: ?324.00
我在jsp中为RenderRequests提供了相同的两行代码,在jsp中为ResourceRequests提供了相同的两行代码。但不管我做什么,它总是无法作为ResourceRequest的一部分生成干净的输出
关于是什么导致了不一致性,有什么想法吗
第二次编辑:
在+BalusC的第2条评论之后,我在jsp中添加了以下内容:
<% System.out.println("Response Char Encoding: " + response.getCharacterEncoding()); %>
对于不起作用的渲染请求,我得到:
SystemOut O Response Char Encoding: ISO-8859-1
所以,是的,正如预测的那样,这是一个字符编码问题
-
编辑3:
因此,问题是如何在Spring中在ResourceResponse上设置UTF-8的字符编码
输入的page指令不会覆盖上面看到的默认编码。将其直接构建到Spring中的方法非常复杂,请看,鉴于我只有少量的资源请求方法,似乎最简单的方法就是
response.setCharacterEncoding("UTF-8");
这些方法
如果有其他建议,我将不胜感激,尤其是如果我对如何更轻松地将其放入Spring的想法有误的话。我对此的最终解决方案是在上面的编辑3中。硬编码
response.setCharacterEncoding("UTF-8");
分为两种资源响应方法
如果您有更广泛的资源请求并需要全面的解决方案,请按照问题中的链接进行操作。问号而不是特殊字符通常表示字符编码问题。中的问号表示在您的特定示例中,要求响应使用的字符编码未涵盖所需的字符。您应该尝试验证是否所有可能的字符编码设置都设置为一个相同的编码,现在应该是UTF-8。因为我不做Portlet,所以我无法发布更详细的答案如何配置它。根据您的编辑,您应该对响应字符编码感兴趣,而不是请求字符编码。因此,so response.getCharacterEncoding。对于普通servlet环境中的JSP,您可以通过将其置于JSP顶部或通过应用程序范围的web.xml设置来控制该值。不过,我也不确定portlet是如何发挥作用的。@BalusC Thanks——我在切换请求和响应时犯了一个愚蠢的错误。结果正如预期的那样。现在尝试看看是否有一种Spring方法可以在响应上设置字符编码,或者直接将其放入方法中。那么问题解决了吗?您需要一种方法将其应用于所有JSP吗?portlet有web.xml吗?@BalusC
response.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");