2012-02-03 4 views
1

У нас есть Oracle DB с использованием UTF-8 (NLS_CHARACTERSET = AL32UTF8). Затем у нас есть приложение J2EE в Glassfish, которое использует Hibernate.Oracle DB, Glassfish, Hibernate и кодировка символов

При использовании SQL Plus или SQL Developer мы можем корректно считывать и записывать данные, но мы не можем получать специальные символы программно.

Чтение ä мы получаем √§

Глядя на подобные вопросы я попытался:

  • настройки свойств Hibernate

    <property name="hibernate.connection.characterEncoding" value="utf8" /> 
    

  • добавляющие опору defaultNChar=true соединения erty в Glassfish

  • добавить свойство defaultNChar соединения через Hibernate

    <property name="hibernate.connection.defaultNChar" value = "true"/> 
    
  • установки кодировки в utf8

    <property name="hibernate.connection.charSet" value="utf8" /> 
    

Но я до сих пор не в состоянии получить любой символ, который не является основным ASCII.

Любой намек на то, что я делаю неправильно?

Редактировать: с получением я имею в виду выборку с помощью оператора select. Проверка с помощью отладчика или сравнение с правильной строкой (например, "ä") с утверждением.

+0

Можете ли вы определить «получить»? Вы не можете просмотреть символы или не можете выбрать их из базы данных? – Ben

+0

@Ben: Вы правы: я редактировал уточняющий вопрос. выбирая значение и проверяя его программно или с помощью отладчика. – Matteo

+0

@Matteo - данные в полях nvarchar? – tbone

ответ

0

Как указано в комментариях, я понял, что вопрос не имеет смысла, так как в DB-соединении нет проблем. Как было предложено в meta-discussion, я объясняю это как ответ.

0

Вы ничего не сказали о своем URL-адресе подключения из декларации источника данных. Вы пытались установить кодировку в URL-адресе подключения?

jdbc: mysql: // localhost: 3306/yourDB? useUnicode = истина & characterEncoding = UTF-8

я не могу проверить для оракула, но для MySQL решает эту проблему.

+1

Кодировка в URL-адресе специфичен для MySQL. Драйвер JDBC от Oracle не разрешает (формат URL: 'jdbc: oracle: thin: @ // [HOST] [: PORT]/SERVICE'). – Matteo

1

Как обсуждалось в комментариях к исходному вопросу с использованием NVARCAR, и следующая строка, добавленная в конфигурационный файл Hibernate, кажется, работает.

<property name="hibernate.connection.defaultNChar">true</property> 

Это было для меня.

Смежные вопросы