Я делаю одно веб-приложение. В этой заявке я использую 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>
Но теперь может решить мою проблему.
Если кто-нибудь знает какое-либо другое решение, пожалуйста, сообщите мне.
Файл свойств должен быть закодирован в ISO-8859-1. Я предполагаю, что ваша кодируется в UTF8. –
Спасибо JB за ответ .. Я пробовал файл свойств, закодированный в «ISO-8859-1», но я получаю «G�s» вместо «Gás». Итак, любое другое решение, которое у вас есть? –