2011-12-07 16 views
8

Mam plik JSP:Coś złego kodowania .Properties lub JSP

<%@ page language="java" contentType="text/html; 
charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 
<c:set var="language" 
    value="${not empty param.language ? param.language : not empty language ? language : pageContext.request.locale}" 
    scope="session" /> 
<fmt:setLocale value="${language}" /> 
<fmt:setBundle basename="localization.text" /> 
<!DOCTYPE html> 
<html lang="${language}"> 
<head> 
<title>JSP/JSTL i18n demo</title> 
</head> 
<body> 
<form accept-charset="UTF-8"><select id="language" 
    name="language" onchange="submit()"> 
    <option value="en" ${language=='en' ? 'selected' : ''}>English</option> 
    <option value="ru" ${language=='ru' ? 'selected' : ''}>Russian</option> 
</select></form> 
<form name="loginForm" method="POST" action="controller"><input 
    type="hidden" name="command" value="login" /> <label for="login"><fmt:message 
    key="login.label.login" />:</label> <input type="text" name="login" value=""> 
<br> 
<input type="hidden" name="command" value="password" /> <label 
    for="password"><fmt:message key="login.label.password" />:</label> <input 
    type="password" name="password" value=""> <br> 
<fmt:message key="login.button.submit" var="buttonValue" /> <input 
    type="submit" name="submit" value="${buttonValue}"></form> 
</body> 
</html> 

Jak można dostać od napisane wyżej problem jest w kodowaniu i problem jest w języku rosyjskim. Więc tutaj jest mój plik .properties (text_ru.properties w folderze lokalizacji):

login.label.login = Логин 
login.label.password = Пароль 
login.button.submit = Отправить 

Btw, to English file:

login.label.login = Login 
login.label.password = Password 
login.button.submit = Sign in 

Ale przeglądarka daje mi tę rzecz:

jsp pic

Zapisałem moje pliki .properties w utf-8 i wypróbowałem je za pomocą dwóch programów (pierwszy to Eclipse, a drugi to Notepad ++) i naprawdę nie wiem, co z tym problemem kodowania.

Będę bardzo wdzięczny za pomoc.

Odpowiedz

14

Niestety, gdy pliki .properties są odczytywane za pośrednictwem ResourceBundle, zawsze oczekuje się ISO-8859-1.

Typowe podejście polega na unikaniu znaków Uncode w plikach właściwości. Wtedy będzie to wyglądać mniej więcej tak:

hours.label = \ u0427 \ u0430 \ u0441 \ u043e \ u0432 \ u0435

AnyEdit tools jest plugin Eclipse sprawia, że ​​cytowanie i unescaping podczas rozwoju łatwego .

Innym, bardziej żmudne podejście jest zapewnienie własnego tag, który wykorzystuje własne ResourceBundle realizacji, które z kolei wykorzystuje .load(reader), gdzie reader korzysta UTF-8

Powiązane problemy