Как можно заключить в кавычки символы юникода в приглашении mysql или в SQL вообще?

У меня есть странный символ Unicode в моей базе данных MySQL

значение выглядит так

card issuer bank didn<U+0092>t approve your payment

так что апостроф должен быть странным символом юникода, предположительно из windows

Я хочу заменить его, но не знаю, как заключить его в SQL

пробовал следующее, не работает:

заменить (текст, приведение (0x0092 как набор символов utf8), 'x')

0x0092

0x000x92

'\ U + 0092'

U'0x0092'

и тонны других комбинаций, ни одна из них не работает

есть идеи?

3 ответа

Решение

В и я прогнал результат выбора через шестнадцатеричный редактор, чтобы выяснить, что именно выходит, так что получается, что на самом деле это 0xc292, как описано здесь.

Почему в Linux это отображается как U+0092?

Эта страница кажется очень близкой к тому, что вы ищете, хотя конкретные значения отличаются; 0x0092 - это десятичное число 146, код Windows для правильной умной цитаты. Это эквивалентно 0xe28099 в UTF-8, как вы увидите по ссылке:)

В итоге:

Этот код должен работать как с кодировкой Windows-1252, так и с UTF-8, кодировкой с расширенным набором символов, что делает его предпочтительной кодировкой для электронной почты и веб-сайтов.

UPDATE `t` SET `c` = REPLACE(`c`, 0xE28098, "'");
UPDATE `t` SET `c` = REPLACE(`c`, 0xE28099, "'");
UPDATE `t` SET `c` = REPLACE(`c`, 0xE2809C, '"');
UPDATE `t` SET `c` = REPLACE(`c`, 0xE2809D, '"');

...и так далее.

Почему бы просто не перебить его так, как вы хотите?

update set = "банк эмитента карты не одобрил ваш платеж" где =;

Если многие из них имеют одну и ту же проблему, возможно, они будут включены в код?

Если это все еще невозможно, попробуйте выполнить функцию convert() по всему значению столбца.

конвертировать (используя utf8)

Другие вопросы по тегам