Tool zum Konvertieren von Zeichen mit Akzent in HTML-Entitäten?


7

Gibt es ein Tool (Befehlszeile ist in Ordnung), das Zeichen mit Akzent in HTML-Entitäten in Ubuntu konvertieren kann? Vorzugsweise rekursiv und ohne auch HTML / PHP-Tags zu konvertieren.

e.g.
from: é
to: é
or: é

Antworten:


7

Recode kann in HTML-Entitäten konvertieren:

$ echo "é" | recode ..html
é

Beim Rekodieren stehen einige leicht unterschiedliche HTML-Transformationen zur Verfügung. siehe info recode HTML.

Wenn Sie eine Datei oder einige Dateien neu codieren möchten, können Sie verwenden

$ recode ..html one_file another_file and so on

Verwenden Sie für rekursive Aktionen den findBefehl, z

$ find your_directory -type f -name "*.html"

Der obige Befehl find zeigt nur die Dateien an. Stellen Sie sicher, dass Sie nur die richtigen Dateien gefunden haben, keine Binärdateien und keine Dateien in unerwünschten Verzeichnissen. Es ist auch eine gute Idee, ein Backup zu erstellen oder eine Kopie Ihrer Dateien zu verwenden, nicht die echten Dateien. Wenn Sie den richtigen -exec your_command {} +Suchbefehl gefunden haben, fügen Sie ihn hinzu , wobei Ihr_Befehl der recode ..htmlvon oben ist und {}die Datei (en) bezeichnet, die von find zum Umcodieren angegeben werden:

$ find your_directory -type f -name "*.html" -exec recode ..html {} +

Aber warten Sie einen Moment, es gibt eine große Einschränkung: Es wird recode ..htmldavon ausgegangen , dass sich Ihre Eingabedateien im selben Zeichensatz (Codierung) befinden, den Sie in der Befehlszeile verwenden. Wenn alle Ihre Dateien das "moderne" UTF-8 verwenden, funktioniert es einwandfrei, da Ubuntu UTF-8 aus dem Standard verwendet. Wenn einige Ihrer Dateien jedoch die ältere ISO-8859-1 oder andere Zeichensätze verwenden, ist dies viel komplizierter.


Ja, ich habe einen Umbenennungsbefehl ausgeführt, um alle Leerzeichen in den Dateien mit zu entfernen rename 's/\ /_/g' *und dann for i in *.php; do iconv --from-code=ISO-8859-15 --to-code=UTF-8 $i > $i.iconv; mv $i.iconv $i; donein UTF-8 zu konvertieren. Das Problem mit diesem Programm ist, dass es alle erdenklichen Zeichen ausführt, einschließlich HTML- und PHP-Tags.
bafromca

1
Sie mussten die Dateien nicht umbenennen. Sie können doppelte Anführungszeichen um Ihre Variablenwerte verwenden, z "$i". Diese doppelten Anführungszeichen stellen sicher, dass Ihre Variablenwerte nicht aufgeteilt werden.
Elmicha

0

wahrscheinlich sed. Tutorial hier

http://www.grymoire.com/Unix/Sed.html#uh-6

für Ihr Beispiel vielleicht Befehl

sed s/"é"/"\&#233"/g < oldfile > newfile

(Repariere mich, wenn ich falsch liege, habe ich eine Weile nicht gesehen)

GUI

wahrscheinlich standardmäßig installiertes gedit, Strg + H.


Ich kenne diese Tools, aber ich muss Hunderte von Dateien konvertieren (also ist gedit out) und ich muss alle Zeichen mit Akzent konvertieren (und es gibt viele davon).
bafromca

Wenn Sie Hunderte von Dateien konvertieren müssen, verwenden Sie dieses Sed mit find, möglicherweise wie folgt: find / folder_where_you_have_files -mindepth 0 -name * .html -exec sed s / "é" / "\ & # 233" / g <{} > {} .new \; sed kann Anweisungen aus der Datei lesen, sodass Sie alle Zeichen auf einmal ersetzen können.
Ich bin

0

Überprüfen Sie die Quelle von http://www.text-symbols.com/tools/escape-chars/

Nehmen Sie dieses Javascript, führen Sie es in einer js-Umgebung aus, die einige E / A-Vorgänge (node.js) find -execausführen kann, und suchen Sie einfach alle Dateien zum Konvertieren und führen Sie Ihren knotenbasierten Konverter für alle erforderlichen Dateien aus.


0

Inspiriert von Denwerkos Vorschlägen zur Verwendung von Sed habe ich ein gut dokumentiertes, leicht lesbares Open-Source-Bash-Skript geschrieben, das Buchstaben mit Akzent in HTML-Entitäten konvertiert. Sie finden es hier: http://www.lugato.co.uk/silvio_dwl.html Viel Spaß! ;)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.