Данные Weblogic DB2 отображаются как '?????' Вопросительные знаки

Я запускаю Weblogic 10.3.3 с DB2 z/os и базой данных Unicode как для своих локальных серверов, так и для серверов разработки.

Когда я запускаю свое приложение локально, запрос к базе данных возвращает некоторые данные Unicode в виде вопросительных знаков, например '??? ?? ??????'.

Кажется, это происходит с японскими персонажами.

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

Кто-нибудь видел это раньше?

Не могу понять чем отличаются серверы. Драйверы и источники данных идентичны.


person Bill    schedule 01.06.2011    source источник


Ответы (2)


Да, я был там. Вам нужно добавить,

-Dfile.encoding=UTF-8

к вашему сценарию запуска Weblogic. Я нашел ответ в этом блоге http://alexrogan.com/?p=126.

person Tony Borf    schedule 03.06.2011

Ваш код, по-видимому, полагается на кодировку платформы по умолчанию при обработке символов. Сервер разработки, похоже, использует UTF-8, в то время как ваша локальная разработка, похоже, использует что-то другое, например, Windows CP1252, который не поддерживает японские символы.

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

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

Или, когда вы используете сервлеты для создания HTML (или другого контента), вам нужно добавить это до того, как вы вызовете getWriter()

response.setCharacterEncoding("UTF-8");

Или, когда вы используете JAX-RS (как я вижу в одном из ваших тегов), вам нужно добавить charset к типу содержимого @Produces.

@Produces("application/xml;charset=UTF-8")

Смотрите также:

person BalusC    schedule 02.06.2011
comment
Я также замечаю, что вывод консоли в eclipse не отображает символы utf-8. - person Bill; 02.06.2011
comment
Это настройка Eclipse. По умолчанию он также использует кодировку платформы по умолчанию. Окно › Настройки › Общие › Рабочая область › Кодировка текстового файла. Для получения более подробной информации и экранов перейдите по ссылке См. также в нижней части ответа. - person BalusC; 02.06.2011
comment
Но в редакторе elcipse я смог добавить этот код как исходный String input = 日本語; System.out.println(Исходная строка ввода от клиента: + ввод); И это выходит в консоли как '???' даже после того, как я установил eclipse на utf8 - person Bill; 03.06.2011