Detect Gegenwart eines spezifischen charset
-
13-09-2019 - |
Frage
ich brauche eine Möglichkeit zu erkennen, ob eine Datei Zeichen aus einem bestimmten Zeichensatz enthält.
Insbesondere möchte ich die Anwesenheit von UTF8-kodierten kyrillischen Zeichen in einer Reihe von Dateien zu erkennen. Gibt es ein Tool, dies zu tun?
Danke
Lösung
Wenn Sie bereit Lösung suchen, könnten Sie Enca versuchen wollen.
Wenn Sie jedoch nur Gegenwart erkennen wollen, was möglicherweise als UTF-8 kyrillische Zeichen decodiert werden (ohne vollständige UTF-8 Gültigkeitsprüfungen), müssen Sie nur für so etwas wie /(\xD0[\x81\x90-\xBF]|\xD1[\x80-\x8F\x91]){
grep n ,}/
(genau dieses regexp ist für n nachfolgende UTF8-kodierte russische kyrillische Zeichen). Für zusätzliche Kontrolle, dass die gesamte Datei nur gültige UTF-8-Daten enthält, die Sie so etwas wie isutf8(1)
.
Beide Methoden haben ihre guten und schlechten Seiten und kann manchmal falsche Ergebnisse liefern.
Andere Tipps
IIRC die ICU-Bibliothek hat Code, der Zeichensatz Erkennung der Fall ist. Obwohl es im Grunde eine Best-Effort-Vermutung.
Edit: Ich habe richtig erinnere, diese Papier / tutorial rel="nofollow