июля 01, 2009

Openfire encoding offline messages & rosters in UTF8

С какой-то версии у популярного Jabber сервера Openfire (бывший Wildfire) появились проблемы с хранением в базе данных оффлайн сообщений и ростеров в симолах, отличных от латиницы. Не пишу, что проблема с  конкретной кодировкой, потому что с проблемой столкнулись все пользователи - не только пользователи с кирилллицей.


Проблема решается следующим образом:


1. базу данных для Openfire необходимо создать с указанием кодировок


CREATE DATABASE `openfire` CHARACTER SET utf8 COLLATE utf8_general_ci;


2. в настройка openfire.xml в описании подключения к mysql необходимо добавить строки:


<database>
<defaultProvider>
<driver>com.mysql.jdbc.Driver</driver>
.................


.................
<mysql>
<useUnicode>true</useUnicode>
</mysql>

</defaultProvider>
</database>


3. oбязательно указать в настройках сервера MySQL в секциях [client] и [mysqld]:


default-character-set = utf8



UPD. На просторах Интернета нашел более изящный вариант:
jdbc:mysql://[your_host]/[database_name]?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8

Комментариев нет: