我正在尝试显示中文字符,但它显示了??????????。在我的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格式编码中文,那么它的工作正常。但我不想那样做。我有什么遗漏。
请帮忙。
答案 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格式表示一些如何。