Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Websphere, Oracle thin, русские символы. 
:(
    Опции темы
KostenkoSergey
Дата 18.10.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



Решил завести новый топик.

Вкратце опишу проблему - переносим WebSphere Application Server c винды на линух, со старта вылез трабл описанный тут:
http://forum.vingrad.ru/forum/topic-176735...1%82%D1%8B.html

Его удалось побороть изменив локаль на export LC_ALL=ru_RU.utf-8 - с датой помогло, но вот русские символы из базы отображаются крокозяблами.

Использую thin оракл 10

Можно ли как то указать настройки относительно кодировки пулу именно для thin-драйвера ...  Или что его делать ? 



Это сообщение отредактировал(а) KostenkoSergey - 18.10.2007, 10:34
PM ICQ   Вверх
mbasil
Дата 18.10.2007, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



По-моему надо проверить, установлен ли русский язык в ОС.
То есть в Java 

    Locale l = Locale.getDefault();

    System.out.println( l.getDisplayLanguage() + " <> " 
              + l.getDisplayCountry() + " <> " 
              + l.getLanguage());

На худой конец можно при старте приложения "сунуть":

Locale.setDefault(...);

Можно в инициализационном файле Oracle прописать параметр NLS_LANG

Вообще непонятно Вы мигрировали только сервер приложений или и сервер базы данных тоже.
И какой вообще charset в базе. По хорошему, при использованн UTF8 лучше и в базе
аналогичный charset, чтобы не делать преобразований. Для простоты можно использовать
столбцы типа NVARCHAR2, NCLOB, NCHAR.

Однако если база уже есть, делать нечего надо обеспечить преобразование. 
PM MAIL   Вверх
mbasil
Дата 18.10.2007, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



Порывшись в документации 
http://download.oracle.com/docs/cd/B19306_...s.htm#sthref455 

нашел только два параметра настройки драйвера

defaultNchar - The value TRUE causes the default mode for all character data columns to be NCHAR.

fixedString  -   The value TRUE causes JDBC to use FIXED CHAR semantics when setObject is called with a String argument. By default, JDBC uses VARCHAR semantics. The difference is in blank padding. By default, there is no blank padding. For example, 'a' does not equal 'a ' in a CHAR(4) unless fixedString is TRUE.

которые относятся к настройкам, связанным с хранением символов. И оба в таком случае не помогут.
PM MAIL   Вверх
KostenkoSergey
Дата 18.10.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



По-моему надо проверить, установлен ли русский язык в ОС.

Таки да, просмотрел (locale -a|grep RU) - ru_RU.utf и koi8.
Происталил
Код

localedef -c -i ru_RU -f CP1251 ru_RU.CP1251
export LC_ALL=ru_RU.CP1251
export LANG=ru_RU.CP1251


Всё заработало.

Отсюда вывод про ограничения jdbc thin драйвера. Так как каких либо параметров типа чарсет для пула соединений я не нашёл (мож кто видел?), то скорее всего драйвера "читают"  в локальной кодировке.
Но блин тогда получается, что локальная кодировка должна быть такой же как и кодировка СУБД - а это как то не правильно  smile 

PM ICQ   Вверх
mbasil
Дата 18.10.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 399
Регистрация: 4.5.2007
Где: Москва

Репутация: 9
Всего: 13



1 Не такая же, а преобразуемая. То есть сеанс Java в рамках JVM лезет в ОС и смотрит какой основной язык там установлен, устанавливает соответствующую локаль по умолчанию, а JDBC драйвер пытается выполнять все преобразования charset'ов в соответствии с этой локалью.

2. В конце концов как я писал можно выполнить  Locale.setDefault(...);

3. То есть они хотели как лучше. Например для предоставления пользователю соответствующего установленному языку    ResourceBundle.  А получилось как всегда.
PM MAIL   Вверх
KostenkoSergey
Дата 19.10.2007, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 31.10.2005
Где: Kiev

Репутация: 3
Всего: 8



Цитата(mbasil @  18.10.2007,  14:56 Найти цитируемый пост)
2. В конце концов как я писал можно выполнить  Locale.setDefault(...);


Выполнил 
Код

    static {
        java.util.Locale.setDefault(new java.util.Locale("ru", "RU"));
    }


Помогло, но не до конца. Дата и время стало отображаться правильно, а вот кодировку это никак не затронуло :( Её пока что меняю в самой ОС (export LANG=ru_RU.CP1251) , а вот как задать из кода, не нашёл :(
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.2643 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.