oracle + java проблема кодирования при вставке - PullRequest
1 голос
/ 29 декабря 2010

Я застрял на этом. я не гава или ява-гуру, поэтому, пожалуйста, дайте подробные ответы:)

У меня есть веб-сервис, который вставляет что-то в БД. веб-сервис размещен на оси. БД оракул со следующими свойствами:

NLS_LANGUAGE    AMERICAN
NLS_TERRITORY   AMERICA
NLS_CHARACTERSET    ZHS16GBK

веб-сервис размещен на windows server 2008, английская версия, но я изменил язык системы на китайский

теперь данные после вставки имеют проблему с кодировкой и показывают странные символы, такие как ????, exxk ??

Файл jws имеет кодировку GBK. и данные, которые вставляются в БД, жестко запрограммированы в файле [мы не читаем их из ЗАПРОСА]

[править] только одно, невозможно изменить всю БД на utf-8, так как в ней много таблиц и данных

[далее редактировать], чтобы прояснить ситуацию

машина принимает данные из двух источников. в основном он используется для отправки и получения смс / ммс нашим подписанным пользователям. прежде всего, он работает с центром управления оператором GSM, где все кодировки обрабатываются в GBK. С другой стороны, машина также принимает запросы от веб-сайта для отправки смс / ммс пользователям. Здесь кодирование обрабатывается в UTF-8. Если веб-сайт хочет отправить смс пользователю, на этом компьютере он вызовет веб-сервис, который вставит данные в базу данных [наша проблема здесь]. затем служба Windows непрерывно проверяет базу данных и, если она находит какой-либо новый запрос на отправку смс / ммс, отправляет смс / ммс и удаляет запись.

на старой машине все работало нормально, так как на нем была китайская версия Windows 2003. Мы обновили ее до нового сервера и установили на нем английскую версию Windows 2008 Server. и теперь данные искажаются после вставки веб-сервиса в БД.

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Сделать набор символов в UTF8.

0 голосов
/ 29 декабря 2010

Я также рекомендую выбрать UTF8 в качестве кодировки базы данных.

Осторожно, так как по умолчанию java использует кодировку UTF16. Чтобы установить кодировку по умолчанию, используемую java, используйте флаг 'file.encoding':

java -Dfile.encoding = UTF8 ...

Я никогда не слышал о кодировке ZHS16GBK, но, похоже, она не поддерживается Java:

http://download.oracle.com/javase/1.4.2/docs/guide/intl/encoding.doc.html

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