Frage

Kennt jemand einen einfachen Weg, um Zeichen in Unicode zu finden, die den ASCII -Zeichen ähnlich sind? Ein Beispiel ist das "Kyrillischer kleiner Buchstaben DZE (us) ". Ich würde gerne eine Suche und Ersetzen nach ähnlichen Zeichen durchführen. Mit ähnlicher Weise meine ich menschlich lesbar. Sie können keinen Unterschied sehen, indem Sie es betrachten.

War es hilfreich?

Lösung

Wie von anderen Kommentatoren festgestellt, Unicode -Normalisierung ("Compatibilty Charaktere") wird Ihnen hier nicht helfen, da Sie nicht nach offiziellen Äquivalenzen suchen, sondern nach Ähnlichkeiten in Glyphen (Buchstabenformen). (Der verknüpfte technische Bericht von Unicode ist jedoch immer noch gelesen, da er sehr gut geschrieben ist.)

Wenn ich Sie wäre, um Ihnen die mühsame Arbeit zu ersparen, eine Liste von Charakteren selbst zusammenzustellen, würde ich nach Ressourcen suchen Homographenangriffe: Dies ist eine Methode zur böswilligen irreführenden Webbenutzern, indem sie URLs mit Domänennamen anzeigen, in denen einige Buchstaben durch visuell ähnliche Buchstaben ersetzt wurden. Andere Technischer Bericht von Unicode, Auf Sicherheit enthält ein Abschnitt zu dem Problem. Es gibt auch - und das kann das sein, was Sie am meisten brauchen - a "Verwirrbare" Tabelle. Hier ist ein weiterer Artikel mit hauptsächlich Satzzeichen, von denen einige ASCII visuell ähnliche Gegenstücke in der Nicht-ASCII-Code-Tabellen.

Ich hoffe, dass Sie die Frage nicht stellen, um einen solchen Angriff zu erstellen.

Andere Tipps

Siehe die Unicode -Datenbank: http://www.unicode.org/public/unidata/unicodedata.txt.

Jede Zeile beschreibt beispielsweise einen Unicode Caharacter:

1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L;<compat> 0061 02BE;;;;N;;;;;

Wenn es ähnliche (kompatible) Zeichen für dieses Symbol gibt, wird es in der angezeigt <compat> Feld des Eintrags. In diesem Beispiel, 0061 (ASCII a) ist mit dem kompatibel LATIN SMALL LETTER A WITH RIGHT HALF RING Unicode -Zeichen.

Was Ihren Charakter betrifft, ist der Eintrag

0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405

Was, wie Sie sehen können, kein Kompatibilitätszeichen angeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top