Я пытаюсь использовать это решение и это (для str_eval()
), но, похоже, другой код или другой UTF8 Форма нормализации , возможно, объединение диакритические знаки ...
select distinct logradouro, str_eval(logradouro)
from logradouro where logradouro like '%CECi%';
-- logradouro | str_eval
------------------------------+----------------------------
-- AV CECi\u008DLIA MEIRELLES | AV CECi\u008DLIA MEIRELLES
ПРОБЛЕМА : как выделить все строки таблицы, где существует проблема? То есть где встречается \u
?
- не работает с
like '%CECi\u%'
ни like '%CECi\\u%'
- работает с
like E'%CECi\u008D%'
, но не является общим c
Для Google отредактировано после решенного вопроса: это типичная проблема XY . В исходном вопросе (выше) я использовал ~ неправильную гипотезу . Все приведенные ниже решения являются ответами на следующий (объективный) вопрос:
Как выбрать только печатный текст ASCII?
« Printable ASCII » - это подмножество UTF8, это "весь код ASCII, который не является" управляющим символом "" .
"Непечатаемые" управляющие символы - это шестнадцатеричные символы UNICODE от 00 до 1F и 7F (HTML объект �
до 
+ 
или десятичный от 0 до 31 + 127).
PS1: ноль (�
) - это отметка «конец текста» символа PostgreSQL текст внутреннее представление типа данных, поэтому не нужно проверять, но нет проблем, чтобы включить его в диапазон.
PS2: о второстепенном вопросе «как преобразовать слово с ошибкой кодирования в допустимое слово? ", см. heuristi c на мой ответ .