Ошибка обновления MySQL при использовании специальных символов

Мне было интересно, сталкивался ли кто-нибудь с этим раньше. У меня есть клиент, который использует специальные символы в поле описания продукта. Обновление до базы данных MySQL работает нормально, если мы используем их HTML-эквиваленты, но не работает, если используется сам символ (я полагаю, скопированный из карты символов или Word).

Кто-нибудь видел такое поведение раньше? В данном случае речь идет о символе - и мы не можем заменить его (по крайней мере, в ASP), поскольку этот символ появляется в строке SQL как "?".

Любые предложения высоко ценятся - спасибо!


person Katy    schedule 24.10.2008    source источник


Ответы (2)


Это предполагает несоответствие набора символов между вашей базой данных (соединением) и фактическими данными.

Скорее всего, вы используете ISO-8859-1 на своем сайте, но MySQL считает, что он должен получить UTF-8.

http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html описывает, что нужно проверить и как это изменить. Самый простой способ, вероятно, запустить запрос "SET NAMES latin1" при подключении к базе данных (при условии, что вам нужен именно этот набор символов).

Будучи поклонником Unicode, я бы предложил полностью перейти на UTF-8, но понимаю, что это не всегда осуществимый вариант.

Редактировать: @markokocic: сопоставление определяет только порядок сортировки. Хотя это, конечно, должно соответствовать вашему набору символов, это не влияет на диапазон символов, которые могут быть сохранены в поле.

person Michael Madsen    schedule 24.10.2008
comment
Спасибо за указатели. Клиент, соединение и результаты установлены как UTF-8, база данных и сервер установлены как latin1. Правильно ли я предполагаю, что база данных и сервер тоже должны быть UTF-8? - person Katy; 06.11.2008
comment
Если перейти на юникод, то да. Сайт также должен объявлять себя как UTF-8, и любой статический текст должен соответствовать этому. Если нет, то оставьте их и вместо этого измените соединение. Вы можете сделать это, отправив запрос SET NAMES при его открытии или соответствующим образом изменив файлы конфигурации. - person Michael Madsen; 11.11.2008

Вы пытались установить сопоставление для таблицы в utf-8 или что-то не latin1/ascii.

person Marko    schedule 24.10.2008