Как можно заключить в кавычки символы юникода в приглашении 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)