Проблема записи строк utf-8 в MySQL из Java - PullRequest
0 голосов
/ 23 декабря 2010

Я пытаюсь записать строку, отправленную со стороны клиента, в базу данных MySQL из приложения Java. Строка, отправленная с клиента, имеет кодировку UTF-8. Я подтвердил это, поскольку взял трассировку пакетов с помощью инструмента, такого как wireshark. Строка, которую отправляет клиент, состоит из 3 символов: латинского OE (0xc593) и бета (0xc39f), знака евро (0xE2 0x82 0xAC). Я использую подготовленный способ постановки settring для записи строки в базу данных. Таблица создана с поддержкой кодировки utf-8 char. Теперь, когда я вижу записанную строку в базе данных, я нахожу это

select hex(message) from table1

C385 C293 C383 C29F C3A2 C282 C2AC

Похоже, что-то меняет строку в середине. Может ли кто-нибудь помочь мне решить эту проблему?

Спасибо.

1 Ответ

1 голос
/ 23 декабря 2010

В соответствии с MySQL документами ,

Клиентские приложения, которым необходимо обмениваться данными с сервером с использованием Unicode, должны соответствующим образом установить набор символов клиента;например, с помощью оператора SET NAMES 'utf8'.

Вам также следует проверить системные переменные character_set_client и character_set_connection , чтобы понять, какMySQL пытается интерпретировать вашу строку.

Вы также можете проверить параметры сортировки, используемые отдельными таблицами, также выполнив запрос SHOW TABLE STATUS IN database.

Надеемся, что это даст вам более четкое представление оименно то, что сервер MySQL пытается сделать со строками, которые вы отправляете с клиента.Чтение в документах также должно быть просветляющим.

Удачи: -)

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