9

我尝试了很多东西,但不明白为什么我会得到?而是重音字符。

我在我的html上使用:

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

我的控制器有以下代码

@RequestParam ("name") String name
name = name.trim();
system.out.println(name);
//response t?ata
//expected tábata

我该如何解决?

谢谢

4

2 回答 2

9

我可以通过在我的主模板上添加以下代码来解决这个问题:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
于 2013-02-20T01:55:20.807 回答
0

重音字母和普通话和阿拉伯语等其他语言很棘手。
我猜你还没有看到这个问题的最后一个。
您应该确保在链中的任何链接中正确编码文本。

例如

  • 数据库->java->响应->浏览器
  • 属性文件->jav->响应->浏览器
  • 请求(参数/表单)->响应->浏览器
  • java -> 记录器 -> 控制台

我建议遵循这个很好的答案 How to get UTF-8 working in Java webapps?

要将其调整为弹簧,请使用弹簧的 CharacterEncodingFilter。

<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>
      org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
         </init-param>
        <init-param>
             <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
         </init-param>
 </filter>

如果您使用 i18n,请确保为您的 ResourceBundleMessageSource 定义默认编码,例如

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

确保您的属性文件使用 Java 的 native2ascii 正确编码。
或者如果你使用 eclipse 更好,我推荐Property Editor 插件。
有时第三方框架会破坏某些东西,您需要做一些“神奇的”

new String(yourstring, "UTF8")

有关更多信息,请参见此处

请注意,一些视图解析器也需要定义编码。

于 2013-02-20T19:29:16.897 回答