Сохранение сербских латинских символов в базе данных - PullRequest
2 голосов
/ 05 сентября 2011

У меня проблема с сохранением сербских латинских символов в базе данных, но только когда я сохраняю их из приложения jsf. Когда я вставляю несколько строк в базу данных напрямую, используя SQLyog, все в порядке. Когда я пытаюсь вставить что-то из приложения вместо символов: č, ć и đ в базе данных вставляются знаки вопроса.

С другой стороны, когда я читаю эту строку из базы данных, все отображается правильно, без вопросительных знаков.

1 Ответ

6 голосов
/ 05 сентября 2011

Когда я пытаюсь вставить что-то из приложения вместо символов: č, ć и đ в базе данных вставляются вопросительные знаки.

Другими словами, драйвер MySQL JDBC не поддерживает кодировку символов, в которой символы были изначально отправлены. Драйвер MySQL JDBC по умолчанию использует кодировку платформы по умолчанию при отправке символьных данных в БД, которая может быть, например, ISO 8859-1. Вы должны запретить это делать, указав параметры useUnicode и characterEncoding в URL JDBC.

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

Когда вы используете Facelets в качестве технологии просмотра, JSF по умолчанию уже использует UTF-8, когда дело доходит до рендеринга содержимого HTML и обработки представленных значений параметров. Так что проблема, по крайней мере, не в этом.

Смотри также:

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