Проблема с отображением японских символов - PullRequest
3 голосов
/ 22 июля 2010

Я извлекаю японскую строку из базы данных Oracle и отображаю ее в браузере. Но символы отображаются в браузере как ??? Вставил японскую строку в БД с помощью функции unistr ().

INSERT INTO MESSAGES (MESSAGE_ID,MESSAGE) VALUES (1,unistr('\0041\0063\0063\0065\0073\0073\0020\004d\0061\006e\0061\0067\0065\006d\0065\006e'));    

Я получил это в журналах jvm ISO8859-1, когда печатал System.getProperty("file.encoding").

select * from v$nls_parameters where parameter in ('NLS_CHARACTERSET') дает UTF8 в моей БД.

Есть ли какие-нибудь указатели о том, как правильно отображать японские символы?

Ответы [ 6 ]

1 голос
/ 09 апреля 2019

вы пытаетесь изменить ISO8859-1 на utf-8.

если вышеупомянутая проблема в стойках, используйте этот код на странице java.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
1 голос
/ 22 июля 2010

Контрольный список:

  1. Проверьте локаль вашего браузера (в соответствии с предложением duffymo).
  2. У вас установлены азиатские шрифты (если запущены окна).Перейдите на сайт www.yahoo.co.jp - можете ли вы увидеть здесь японские символы?
  3. Если у вас есть японские шрифты и японский язык, попробуйте выполнить следующий оператор напрямую:

выберите Unistr ('\ 0041 \ 0063 \ 0063 \ 0073 \ 0020 \ 004 \ 0061 \ 006e \ 0061 \ 0067 \ 0065 \ 006d \ 0065 \ 006e') из двойного

Если # 3 успешно, кодировка поля сообщения в вашей таблице неверна.

1 голос
/ 22 июля 2010

Символ ответа сервера браузеру, по-видимому, неверно указан в отношении кодировки Unicode. * * * * * * * * * * * * * * * * * * * * * * * * * * * - вопрос, если вы используете Tomcat. Обратите внимание, что вы должны использовать UTF-8, а не ISO-Latin-1 / ISO-8859-1, поскольку японские символы не попадают в кодировку символов Latin-1.

В дополнение к указателям о кодировке Unicode вы можете проверить несколько вещей:

  • Хранятся ли данные в базе данных так, как вы хотите? Вы можете использовать такой инструмент, как Oracle SQL Developer (который по умолчанию поддерживает Unicode; я не уверен насчет японских шрифтов, но вы можете переключиться на них), чтобы просмотреть содержимое таблиц базы данных.
  • Вы устанавливаете правильную кодировку для JVM сервера приложений?
  • Вы просматриваете страницы с японским шрифтом, установленным для браузера, и с японским языком?

Если вы исключили все вышеперечисленное, символы Юникода (включая японский) преобразуются в непонятный формат.

1 голос
/ 22 июля 2010

Попробуйте изменить локаль вашего браузера.Вы можете сделать это с Firefox.

0 голосов
/ 23 февраля 2018
  1. Прежде всего, \0041\0063\0063\0065\0073\0073\0020\004d\0061\006e\0061\0067\0065\006d\0065\006e не является допустимой строкой UTF-8 для японского языка (в UTF-8 это означает "Access Managemen").Если вы хотите вставить японские символы в столбец CHAR, попробуйте unistr('\306b\307b\3093\3054') (это означает "にほんご" в UTF-8).
  2. Драйверы JDBC распознают NLS_CHARACTERSET экземпляра БД, поэтому на этом этапе, есливы просматриваете возвращаемое значение resultSet.getString(2); с помощью отладчика, вы увидите вставленную японскую строку.
  3. Чтобы записать строку UTF-8 в HTML с JSP, вы должны написать <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> во главе JSPфайл.Кодировка JSP по умолчанию - ISO-8859-1 (см. https://docs.oracle.com/cd/E17802_01/j2ee/j2ee/1.4/docs/tutorial-update6/doc/WebI18N5.html), и он не может обрабатывать японские символы.
0 голосов
/ 01 августа 2010

Если вы видите ??? в веб-браузере, то изменение языкового стандарта / кодировки браузера, как предлагают другие, действительно не сильно поможет.Только если вы видели , пустые квадраты и / или Моджибаке , тогда может действительно помочь.Также установка шрифтов на самом деле не очень поможет.Если бы для него не было шрифта, вы бы в Firefox видели квадраты с шестнадцатеричными кодами внутри и в IE пустые квадраты, а на самом деле не ???.

У ??? здесь может быть только одна причина: вызаписывают эти символы в ответ HTTP, используя неправильную кодировку.Средний веб-сервер заменит неизвестные символы на ?.Веб-браузер этого не делает, он просто показывает их как есть. На самом деле, в теории есть другая возможная причина;БД будет делать то же самое, когда вы вставляете неизвестных символов, но здесь это менее или более исключено.

Не ясно, какую технологию просмотра вы используете, но, посколькувы говорите о Java и веб-браузере, я предполагаю, что вы используете JSP / Servlet (в будущем, пожалуйста, укажите и пометьте так, чтобы была достигнута нужная аудитория).

Если вы отображаете эти символы с помощью JSP, то вам нужно добавить следующее в верхнюю часть страницы JSP, чтобы указать сервлет-контейнеру писать эти символы с использованием правильной кодировки:

<%@ page pageEncoding="UTF-8" %>

Если выЕсли вы пишете эти символы вручную с помощью сервлета, то вам нужно настроить ответ сервлета HTTP, чтобы использовать правильную кодировку следующим образом: перед тем, как вы напишите в него любой символ:

response.setCharacterEncoding("UTF-8");

См. также:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...