Кодировка MySql UTF

 java.sql.SQLException: Incorrect string value: '\xAC\xED\x00\x05sr...' for column 'xxxx'

Столбец представляет собой длинный текст в MYSQL с кодировкой utf8 и сопоставлением utf8_general_ci.

Что не так?


person user121196    schedule 21.04.2010    source источник
comment
Я читаю байты с сервера, используя utf-8 (или ISO8859-1, или что-то еще), затем создаю StringBuffer, затем передаю его в спящий режим, а затем сохраняю   -  person user121196    schedule 22.04.2010
comment
Можете ли вы добавить отладку, чтобы показать содержимое StringBuffer, прежде чем отправлять его в базу данных, а затем опубликовать это здесь?   -  person Mark Byers    schedule 22.04.2010


Ответы (5)


Немного поздно, но вы, возможно, захотите узнать, что \ xAC \ xED \ x00 \ x05sr ... - это магическое число для сериализации Java. По-видимому, ваш параметр сериализуется, а не вставляется в виде строки.

person Jakub Bochenski    schedule 11.04.2014
comment
Ага, это была моя проблема. Я пытался вставить ArrayList как есть в MySQL VARCHAR. - person ben3000; 22.12.2015

Предполагая, что это шестнадцатеричные escape-коды, текст \xAC\xED\x00\x05sr... не является допустимой строкой UTF-8.

person Mark Byers    schedule 21.04.2010

Это при использовании PreparedStatements в Groovy? Если это так, вы используете GStrings вместо простых Java-строк. Проверьте свой объект, чтобы убедиться, что ваши параметры соответствуют вашим ожиданиям.

person Nathan Mall    schedule 23.02.2015

измените свою таблицу на кодировку latin1 или utf8mb4

person user666923    schedule 10.11.2013

ALTER TABLE your_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Вы можете попробовать это.

person Community    schedule 21.07.2016