Openfire: сообщения в кодировке UTF-8 в автономном режиме сохраняются неправильно
Мы используем Openfire 3.9.3. Его база данных MySql использует сортировку utf8_persian_ci, а в openfire.xml мы имеем:
...<defaultProvider>
<driver>com.mysql.jdbc.Driver</driver>
<serverURL>jdbc:mysql://localhost:3306/openfire?useUnicode=true&amp;characterEncoding=UTF-8</serverURL>
<mysql>
<useUnicode>true</useUnicode>
</mysql> ....
Проблема в том, что автономные сообщения, содержащие персидские символы (в кодировке UTF-8), сохраняются в виде строк с вопросительными знаками. Например, سلام (в переводе с персидского означает "привет") сохраняется и отображается как "????".
1 ответ
MySQL не имеет надлежащей поддержки Unicode, что затрудняет поддержку данных на не западных языках. Тем не менее, драйвер JDBC MySQL имеет обходной путь, который можно включить, добавив
?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
на URL-адрес драйвера JDBC. Вы можете отредактировать файл conf/openfire.xml, чтобы добавить это значение.
Примечание. Если механизм, который вы используете для настройки URL-адреса JDBC, основан на XML, вам потребуется использовать литерал символа XML & для разделения параметров конфигурации, поскольку амперсанд является зарезервированным символом для XML.
Также убедитесь, что ваша БД и таблицы имеют кодировку utf8.