Konvertieren von Nicht-UTF-8 Zeichen in UTF-8

Ich habe einige Dateien, die auf meinem Linux-System vorhanden sind. Diese Dateinamen können auch andere die un_eng-utf8 sein. Ich möchte sie von non-utf8 Zeichen in das utf-8 Zeichen umwandeln. Wie kann ich das mit C-Bibliothek oder Python-Skripten machen?

  • Kann PyYAML Dict-Elemente in nicht alphabetischer Reihenfolge abgeben?
  • Tornado blockiert asynchrone Anfragen
  • Wie kann ich einen Standardwert für ein Attribut zurückgeben?
  • Importieren Sie ein Modul aus einem relativen Pfad
  • Flasche schlägt eine Liste von Objekten auf
  • Python regelmäßiger Ausdruck wieder - Match-URL
  • Python-Liste in einem For-Loop
  • Wie aktualisiere ich einen Wörterbuchwert mit dem Benutzer wählen Sie den Schlüssel zum Aktualisieren und dann den neuen Wert in Python?
  • 2 Solutions collect form web for “Konvertieren von Nicht-UTF-8 Zeichen in UTF-8”

    Wenn Sie die Zeichenkodierung kennen, die zum Verschlüsseln der Dateinamen verwendet wird:

    unicode_filename = bytestring_filename.decode(character_encoding) utf8filename = unicode_filename.encode('utf-8') 

    Wenn Sie die Zeichencodierung nicht kennen, dann gibt es im allgemeinen Fall keine Möglichkeit, die Umwandlung ohne Datenverlust zu machen – "non-utf8" ist nicht spezifisch genug, zB wenn Sie einen Dateinamen haben, der b'\xae' enthält b'\xae' Byte dann kann es je nach Dateinamenkodierung anders interpretiert werden – es ist u'®' in cp1252 , aber das gleiche Byte repräsentiert u'«' in cp437 . Es gibt Module wie chardet , die es Ihnen erlauben, die Charakter-Codierung zu erraten, aber es ist nur eine Vermutung – "Es gibt keine solche Sache wie einfacher Text."

     def converttoutf8(a): return unicode(a, "utf-8") 

    Jetzt für jeden Dateinamen, den du durchführst, wird der utf-8 formatierte Dateiname zurückgegeben

    Oder noch besser, benutzen convmv . Es konvertiert Dateinamen von einer Codierung in eine andere und nimmt ein Verzeichnis als Argument. klingt perfekt.

    Python ist die beste Programmiersprache der Welt.