У меня в базе данных mysql есть странный символ Unicode
значение выглядит так
card issuer bank didn<U+0092>t approve your payment
так что то, что должно быть апострофом, - это странный символ Unicode, предположительно из окон
Я хочу заменить его, но не знаю, как его цитировать в SQL
пробовал следующее, не работает:
replace (text, cast (0x0092 как набор символов utf8), 'x')
0x0092
0x000x92
'\ U + 0092'
U'0x0092 '
и множество других комбинаций, ни одна из них не работает
Любые идеи?
Эта страница кажется очень близким к тому, что вы ищете, хотя конкретные значения отличаются; 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, '"');
...и так далее.
в и я прогнал результат выбора через шестнадцатеричный редактор, чтобы выяснить, что именно выходит, так что оказалось, что на самом деле это 0xc292, как описано Вот.
Почему Linux отображает это как U + 0092 вне меня?
Почему бы просто не применить грубую силу к тому, что вы хотите?
update set = "банк-эмитент карты не одобрил ваш платеж" where =;
Если у многих из них одна и та же проблема, может быть, перехватить ее на вставке в коде?
Если это все еще невозможно, попробуйте преобразовать функцию convert () для всего значения столбца.
конвертировать (используя utf8)