我正在尝试使用 JSTL formatNumber 标记在 JSP 页面中输出带有分组和小数位的数字,类似于以下内容:
<fmt:formatNumber value="${form.amount}" pattern='###,##0.00' />
如果在标签和页面指令中将编码设置为 ISO-8859-1,它适用于 lang=en、fr 和 es,但如果我将其设置为 UTF-8,则 lang=fr 不再正常工作。正如预期的那样,小数点变为逗号,但组分隔符变为�。
作为对格式的测试,我把模式省略了,所以我只有
<fmt:formatNumber value="${form.amount}" />
结果是一样的。
作为对编码的测试,我在页面中加入了一些 ISO-8859-1 不支持的法语字符,例如 Œ、œ 和非常罕见的 Ÿ,当编码为设置为 UTF-8,但是当编码设置为 ISO-8859-1 时,它们会出现乱码,正如预期的那样,所以看起来编码被正确设置为 UTF-8。浏览器还指示编码是 UTF-8。
这是一个 Spring 应用程序,它使用语言环境拦截器根据请求中的“语言”参数设置语言环境。
我还能尝试什么?
编辑:我想我已经弄清楚了,但我不确定为什么我所做的工作有效。我正在使用 Tiles,并且我有一个主 JSP 文件定义页面的布局,其中 4 个图块定义了元、页眉、主要和页脚区域的子页面。我最初只有在布局 JSP 中有 <%@ page pageEncoding="UTF-8"%> ,我认为 tile 定义会继承它,但似乎并非如此。我需要将该指令添加到每个页面,如果我想更改,这会很痛苦。它应该是这样工作的吗?