Funktioniert der [:ascii:]
Unterricht überhaupt in Postgres? Es ist nicht in ihrer Hilfe aufgeführt , ich sehe jedoch Beispiele im Web , die es verwenden.
Ich habe eine UTF-8 - Datenbank, in der Zusammenstellung und c_typ e sind en_US.UTF-8
, und Postgres Version ist 9.6.2. Wenn ich nach Nicht-ASCII-Zeilen wie folgt suche:
select title from wallabag_entry where title ~ '[^[:ascii:]]';
Ich erhalte sowohl Unicode- als auch Nicht-Unicode-Symbole (die vollständige Ausgabe ist hier ):
Сталинская правозащитница: мать Меленкова бабушка Настя
Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте?
Бег по городу и поездка на осле: как в средневековье наказывали прелюбодеев
Как комиссар Крекшин в 1740-е чуть не отменил историю России
Have you heard of Saint Death? Don’t pray to her.
Архаїчна українська мова: перевага чи недолік?
Гренада не их
China’s marriage rate is plummeting because women are choosing autonomy over
Was ist los mit dieser Abfrage?
postgresql
utf-8
regular-expression
unicode
regex
Sonnenfänger
quelle
quelle
regexp_replace()
, um Ihre Nicht-ASCII-Zeichen zu markieren. Siehe meine Antwort.[:ascii:]
sowieso unmöglich machen, Klasse zu verwenden. Was mir bei diesem Problem wirklich geholfen hat, ist ein Konzept von Unicode-Blöcken, das ich aus dieser fabelhaften Regex gelernt habe Tutorial .Antworten:
Um Ihre Frage zu beantworten:
[:ascii:]
funktioniert. Sie können einige Zeichen in Ihrem Text haben , dass Sie nicht so erkennen Nicht-ASCII , aber sie sind da. Sie können beispielsweise ein nicht aufbrechbares Leerzeichen oder ein beliebiges anderes Unicode-Leerzeichen sein .Es ist nicht ungewöhnlich, dass Texte, die Sie aus einer Webseite kopieren und einfügen, nicht zerbrechliche Leerzeichen (
) enthalten. Sie bemerken jedoch nicht, dass sie vorhanden sind.Hier ist ein Beispiel zu zeigen:
Das ist, was du bekommst:
Daran können Sie erkennen, dass es sich bei Ihrem Problem um das Zeichen mit dem rechten Apostroph handelt . ASCII unterstützt nur den Apostroph. Links- und Rechtsapostroph sind typografisch korrekte Unicode-Erweiterungen.
dbfiddle hier
Sie können dies auch mit früheren Versionen unter http://rextester.com/UKIQ48014 (PostgreSQL 9.5) und http://sqlfiddle.com/#!15/4c563/1/0 (PostgreSQL 9.3) überprüfen.
Die Texte, von denen ich glaube, dass Sie sie für reines ASCII halten, sind nicht :
dbfiddle hier
In diesen Texten werden Apostrophe mit " anstelle von " markiert.
Überprüfen Zeichensetzung: Warum ist die richtige Apostroph (U + 2019) und nicht die semantisch unterschiedliche Apostroph (U + 0027), die bevorzugte Apostroph in Unicode? ... um zu sehen, dass Sie nicht die erste Person sind, die auf dieses Problem stößt.
quelle