4

我在使用土耳其语字符时遇到问题...在我的 JSP 页面中,没有问题...但是,当警报来自 Java 端时,土耳其语字符 (ŞşİığĞüÜç...) 看起来像 (ı,?,ü ,ç,Å,...)

在 JSP 页面中,我使用此代码,我可以解决土耳其语字符问题

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

在 Spring MVC 配置中,我尝试了很多方法,但没有成功……例如在我的 mvc 配置类中,我将 MessageSource 设置为这样;

@Bean
public MessageSource messageSource() {
    ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
    messageSource.setBasename("classpath:messages");
    messageSource.setUseCodeAsDefaultMessage(true);
    messageSource.setDefaultEncoding("UTF-8");
    messageSource.setCacheSeconds(0);
    return messageSource;
}

在这个程序中,我尝试重置密码并输入了注销电子邮件地址。最后我收到异常,以下是异常代码博客。

@Autowired
private MessageSource messages;
...

@ExceptionHandler({ UserNotFoundException.class })
public ResponseEntity<Object> handleUserNotFound(final RuntimeException exception, final WebRequest request) {
    logger.error("404 Status Code", exception);
    final GenericResponse bodyOfResponse = new GenericResponse(messages.getMessage("message.userNotFound", null, request.getLocale()), "UserNotFound");
    return handleExceptionInternal(exception, bodyOfResponse, new HttpHeaders(), HttpStatus.NOT_FOUND, request);
}

在我的 messages_tr_TR.properties 文件中,

...
message.userNotFound=Kullanıcı Bulunamadı
...

但在 JSP 页面中,此警报显示如下;

Kullanıcı Bulunamadı

我怎么解决这个问题..

4

2 回答 2

1

在 web.xml 中:

<jsp-config>
    <!-- global JSP configuration -->
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
</jsp-config>

<filter>
    <filter-name>characterEncodingFilter</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>
<filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

将实际文本放入处理程序方法中(暂时)。现在看起来对吗?您的消息文件是否正确保存为 UTF-8?另外,我不知道您是否使用JSON...

于 2015-04-23T19:07:12.807 回答
1

评论跟进,您也可以在响应标头中设置编码。如果你要回来的一个例子json

HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.add("Content-Type", "application/json; charset=utf-8");
return handleExceptionInternal(exception, responseHeaders, HttpStatus.NOT_FOUND, request);
于 2015-04-23T09:52:23.647 回答