Устранение неполадок с кодированием - PullRequest
1 голос
/ 16 августа 2011

Я работаю над проектом j2ee. Предполагается работать шириной как на английском, так и на русском языке. Итак, у меня есть EncodingFilter, который имеет отображение '/ *' и каждый раз делает одну вещь: request.setCharacterEncoding("UTF-8");

У меня также установлен MySQL 5.5, для набора символов таблиц и баз данных установлено значение utf-8, а для параметров сортировки - utf8_general_ci.

На моей локальной машине все работает просто отлично, русский язык правильно хранится в БД.

Затем я попытался протестировать свое приложение на jelastic.com. Там я также выбрал MySQL, импортировал дамп, установил charset на utf-8 и сопоставление на utf8_general_ci. Когда я добавляю русские слова в БД, я вижу только «?????». Но старшие записи, которые пришли с дампом, в порядке! Я буквально понятия не имею, что не так.

1 Ответ

1 голос
/ 16 августа 2011

Вы должны указать драйверу MySQL JDBC использовать UTF-8 в качестве кодировки на стороне клиента вместо кодировки по умолчанию для платформы.Если кодировка платформы по умолчанию не UTF-8, это приведет к тому, что ? будет сохранено в базе данных всякий раз, когда символ не охватывается кодировкой платформы по умолчанию, которую использует драйвер JDBC.

Вы можете сделать это, добавив параметры useUnicode=yes и characterEncoding=UTF-8 в URL JDBC.Например,

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

То, что это работает в вашей локальной среде разработки Java, вероятно, потому что вы уже сконфигурировали кодировку платформы вашей среды по умолчанию как UTF-8.

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