2016-06-18 8 views
2

Я делаю одно веб-приложение. В этой заявке я использую maven, Spring framework, Hibernate framework, JSP, Apache tiles.Файл свойства JSP читается

Все еще это приложение на английском языке. Итак, теперь мое требование - конвертировать приложение на португальский язык. Поэтому я создаю один файл свойств для португальского языка и при необходимости использую этот файл свойств.

В моем приложении создать файл два свойства,
1 для английского языка (messages.properties), 2 для португальского языка (messages_pt.properties)

В моей странице JSP, когда я извлечь значение из messages.properties файла в то время работает нормально, но когда выборка из messages_pt.propertie сек файла в то время не работает должным образом, потому что в messages_pt.properties файл содержит некоторый специальный символ

увидеть мой файл оба свойства

messages.properties 
    gas=Gas 

messages_pt.properties 
    gas=Gás 

Теперь пришел мой вопрос ...

В JSP странице я использую fmt tag library для считанного значения с помощью ключа из файла свойств моя страница JSP, как это

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
     .............. 
    </head> 
    <body> 
     .............. 
     <fmt:message key="gas" /> 
    </body> 
</html> 

поэтому при выборке значения для gas ключ от messages_pt.properties файл в это время получение G�s значение.

Я ищу решение в Google и получать какое-то решение, но никто не может решить мою проблему

Я подаю ниже раствора

1) В JSP странице я добавить CONTENTTYPE в первой строке и в мета-тег. См. Мою страницу jsp выше.

2) Я добавил CharacterEncodingFilter в файл web.xml, и этот фильтр находится в первом фильтре с начальной страницы.

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

3) Я добавил defaultEncoding в messageSourceBean в файле xxx-servlet.xml

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

4) я добавил project.build.sourceEncoding в pom.xml файле.

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    ....... 
</properties> 

5) Я попытался ниже код

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%> 
<p><spring:message code="label.menu"/></p> 

Но теперь может решить мою проблему.

Если кто-нибудь знает какое-либо другое решение, пожалуйста, сообщите мне.

+0

Файл свойств должен быть закодирован в ISO-8859-1. Я предполагаю, что ваша кодируется в UTF8. –

+0

Спасибо JB за ответ .. Я пробовал файл свойств, закодированный в «ISO-8859-1», но я получаю «G�s» вместо «Gás». Итак, любое другое решение, которое у вас есть? –

ответ

2

У меня такая же проблема в прошлом, я делаю следующее решение, смотрю прилагаемый скриншот.

enter image description here

Перейти к свойствам файла> Ресурс>

Изменить yourc тип контента для UTF-8.

+0

Спасибо, что ... вы сэкономите свое время ... –