在Spring MVC中不渲染中文字符

时间:2012-03-04 22:29:48

标签: java spring-mvc utf-8 character-encoding properties

我正在尝试显示中文字符,但它显示了??????????。在我的spring-servlet中我有

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

在我的massages.property中我添加了一些像这样的中文字符     这对中国的考验

我的.jsp文件的第一行

<%@ page pageEncoding="UTF-8" %>

如果我用ascii格式编码中文,那么它的工作正常。但我不想那样做。我有什么遗漏。

请帮忙。

2 个答案:

答案 0 :(得分:4)

根据their documentation,默认情况下使用ISO-8859-1编码读取属性文件。对于ISO-8859-1 the supported range以外的每个字符,您需要使用\uXXXX中的unicode转义符。 JDK在native2ascii文件夹中为此提供了/bin工具。然后,您应该使用转换后的属性文件。

E.g。 (在命令控制台中)

native2ascii -encoding UTF-8 some.properties.utf8 some.properties

其中some.properties.utf8是以UTF-8保存的属性文件,而some.properties是转换后的属性文件,您应该在Web应用程序中使用该文件。

some.key = 這對中國的考驗
然后

将成为

some.key = \u9019\u5c0d\u4e2d\u570b\u7684\u8003\u9a57

大多数IDE,如Eclipse,IntelliJ以及Netbeans(不确定,因为我从未使用过它)会在您使用内置属性文件编辑器时自动执行此操作。

答案 1 :(得分:0)

您可以尝试将编码更改为UTF-16 {在属性文件和spring bean文件中}

一些额外的词: 中文字符占用两个字节,所以实际上应该很奇怪它们如何用UTF-8格式表示(理想情况下应该一次读取8位 - 我的假设) 无论如何,事实上我们可以代表中文字符可以用UTF-8格式表示一些如何。