A [:ascii:]
classe funciona no Postgres? Ele não está listado em sua ajuda , no entanto, vejo exemplos na web que o utilizam.
Eu tenho um banco de dados UTF-8, onde collation e c_typ e são en_US.UTF-8
, e a versão do Postgres é 9.6.2. Quando procuro linhas não ASCII como esta:
select title from wallabag_entry where title ~ '[^[:ascii:]]';
Recebo símbolos Unicode e não Unicode (saída completa está aqui ) :
Сталинская правозащитница: мать Меленкова бабушка Настя
Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте?
Бег по городу и поездка на осле: как в средневековье наказывали прелюбодеев
Как комиссар Крекшин в 1740-е чуть не отменил историю России
Have you heard of Saint Death? Don’t pray to her.
Архаїчна українська мова: перевага чи недолік?
Гренада не их
China’s marriage rate is plummeting because women are choosing autonomy over
O que há de errado com esta consulta?
Respondendo sua pergunta:
[:ascii:]
funciona. Você pode ter alguns caracteres em seu texto que não reconhece como não ASCII , mas eles estão lá. Eles podem ser algo como um espaço inquebrável , por exemplo, ou qualquer outro caractere de espaço Unicode .Não é estranho ter espaços inquebráveis (
) em textos que você copia e cola de uma página da web, mas você não percebe que eles estão lá.Aqui está um exemplo para mostrar:
Isso é o que você recebe:
Você pode ver a partir disso, que seu problema é o caractere de apóstrofo certo . ASCII suporta apenas o apóstrofo. Apóstrofo esquerdo e apóstrofo direito são extensões Unicode tipograficamente corretas.
dbfiddle aqui
Você pode verificar também com versões anteriores em http://rextester.com/UKIQ48014 (PostgreSQL 9.5) e http://sqlfiddle.com/#!15/4c563/1/0 (PostgreSQL 9.3)
Os textos que acho que você acha que são puro ASCII e não são :
dbfiddle aqui
Esses textos estão usando ' em vez de ' para marcar apóstrofos.
Verifique a pontuação: Por que a aspa simples correta (U+2019), e não o apóstrofo semanticamente distinto (U+0027), é o caractere de apóstrofo preferido em Unicode? ... para ver que você não é a primeira pessoa a encontrar esse problema.