Escape-последовательность Unicode в командной строке MySQL - PullRequest
4 голосов
/ 28 марта 2011

Короткая версия:

Какой вид escape-последовательности можно использовать для поиска символов Юникода в командной строке mysql?

Длинная версия:

Я ищу способ поиска в столбце записей, содержащих последовательность Unicode, U + 200B, в mysql из командной строки. Я не могу понять, какой вид побега использовать. Я пробовал \ u200B и x200B и даже & # x200B; Наконец-то я нашел один блог, в котором предлагался синтаксис _utf8. Это произведет символ в командной строке:

select _utf8 x'200B';

Теперь я застрял, пытаясь заставить это работать в запросе "LIKE".

Это генерирует символы, но%, кажется, теряет свое особое значение, когда помещается в часть LIKE:

select _utf8 x'0025200B0025';

Я также попробовал concat, но он тоже не работал:

select concat('%', _utf8 x'200B', '%');

Больше фона:

У меня есть данные с пробелами нулевой ширины (zwsp), Unicode Point U + 200B. Обычно это вызвано копированием / вставкой с веб-сайтов, которые используют zwsp в своих выходных данных. С большинством символов Юникода я могу просто вставить символ в терминал (или создать его с помощью кода ключа), но так как этот невидим, это немного сложнее. Я могу создать файл, который генерирует последовательность «%%» и скопировать / вставить его в терминал, и он будет работать, но он оставляет мою историю команд и вывод терминала не по себе. Я бы подумал, что в MySQL есть простой способ сделать это, но до сих пор у меня не получилось.

Заранее спасибо,

- Пол Бурни

Ответы [ 2 ]

4 голосов
/ 29 марта 2011
select _utf8 x'0025200B0025';

Это не UTF-8, это UTF-16 / UCS-2.Вы могли бы сказать SELECT _ucs2 0x0025200B0025, если у вас есть поддержка UCS-2 в вашей копии MySQL.

В противном случае символ кодировки байтовой последовательности U + 200B в UTF-8 будет 0xE2, 0x80, 0x8B:

select 0xE2808B;
2 голосов
/ 28 марта 2011

Если это Linux, удерживайте Ctrl + Shift + U, затем отпустите U и введите 200B.

...