Как сохранить символы хинди в файле свойств приложения на Java? - PullRequest
3 голосов
/ 06 сентября 2011

Мы пытаемся интернационализировать наше веб-приложение Spring MVC на языке хинди.Когда мы пытаемся скопировать текст на языке хинди в файле свойств, файл свойств показывает небольшие поля в местах символов хинди.

Когда мы запускаем приложение и видим JSP, на нем отображаются знаки вопроса (???????)вместо символов хинди.

Редактировать:

Мой файл свойств имеет следующее содержимое.

login.message=\u0915\u0943\u092a\u092f\u093e \u0905\u092a\u0928\u0947 \u0916\u093e\u0924\u0947 \u092e\u0947\u0902 \u0932\u0949\u0917 \u0911\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0928\u0940\u091a\u0947 \u0915\u0947 \u092b\u093e\u0930\u094d\u092e \u0915\u093e \u0909\u092a\u092f\u094b\u0917 \u0915\u0930\u0947\u0902

Я использовал следующую команду, чтобы получить этозакодированная строка.

native2ascii -encoding utf-8 ApplicationResources_hi.properties gen\ApplicationResources_hi.properties

Моя страница JSP содержит следующую строку в разделе заголовка

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

Нужно ли что-то еще делать?Извините, я могу что-то здесь упустить.

Ответы [ 2 ]

5 голосов
/ 06 сентября 2011

Вы действительно должны сделать 2 отдельных шага, чтобы это работало:

  1. получение текста из вашего файла .properties в ваш код Java правильно и
  2. получение текстаиз вашего Java-кода в браузер так, чтобы он его понимал.

Первый из них несколько странный: .properties файлы определены для использования кодировки ISO-8859-1 , который не поддерживает произвольные символы Unicode, , но, к счастью, файл .properties поддерживает те же экранирования Unicode, которые также поддерживает исходный код Java, а именно \uxxxx.

Теперь написание этих escape-кодов вручную может стать неприятным, поэтому в основном есть две альтернативы:

  • написать файл .properties с выбранной кодировкой (вероятно, UTF-8) и использовать native2ascii, чтобы преобразовать его в кодировку пропппера
  • , используйте специальный редактор .properties, который уже делает это (и обычно немного больше) за кулисами

Как только это сработает (проверьте это в отладчике, посмотревИспользуя значения символов (String.charAt() некоторых локализованных строк), вы должны убедиться, что браузер действительно получает данные правильным образом.

Самый простой способ здесьубедитесь, что вы используете кодировку UTF-8 для передачи данных в браузер, поскольку UTF-8 может представлять все возможные кодовые точки Unicode.

Если вы используете JSP для создания выходных данных, то вы можете использовать что-тонапример, чтобы указать, что вы хотите вывод UTF-8:

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

Подробнее см. в Учебное пособие по Java EE .

0 голосов
/ 06 сентября 2011

Убедитесь, что файл .properties сохранен в кодировке UTF-8, а для charset на странице JSP также установлено значение UTF-8

В вашей среде IDE (например, Eclipse),перейдите в Window -> Preferences -> Workspace, затем убедитесь, что Кодировка текстового файла также установлена ​​в UTF-8

UPDATE
Возможно, вам потребуетсяконвертировать файл в Ascii, Java уже имеет этот инструмент.В командной строке перейдите в папку Java SDK, затем попробуйте следующее:

..\Java\bin>native2ascii -encoding utf-8 Labels.txt Labels_locale.properties

Установите _locale для вашего локального хинди (только две буквы)

...