Spring框架MVC本地化

3

我正在尝试为我们的Spring MVC应用程序添加国际化和本地化支持。 我在*-servlet.xml中进行了如下编码:

<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:messages" />
<property name="defaultEncoding" value="UTF-8"/>

但我发现以下的字符有问题

enter image description here

我无法确定应该修复什么问题。如果可能,请告诉我。


我已经像这样在jsp页面中添加了:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

但它没有起作用。


请展示您的控制器。 - Sotirios Delimanolis
2个回答

2
ReloadableResourceBundleMessageSourcedefaultEncoding属性用于设置解析属性文件时使用的默认字符集。如果未为文件指定特定的字符集,则使用此属性。
它与客户端如何读取响应无关。如果您使用jsp生成响应,可以在开头加上这行代码。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

为了让客户端知道你提供的数据是使用 UTF-8 字符集编码的。

如果你不使用 jsp,还有其他方法可以直接从 HttpServletResponse 或返回的 ResponseEntity 对象中设置 content-typecontent-encoding


请等我片刻。我想补充一下,确保你的属性文件是UTF-8编码。 - digao_mb

0

使用以下命令更新您的默认编码:

<property name="defaultEncoding" value="ISO-8859-1" />

这应该适用于呈现带有重音符号的字符。

至少在我的Spring项目(法语和欧洲语言/用户)中有效。

如果这对您不是一个选项(面向更广泛的目标用户),请尝试在您的JSP中添加以下内容:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    ...
</head>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接