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?

  • Warum ist meine Python / numpy Beispiel schneller als reine C-Implementierung?
  • Crash auf Anruf von boost :: python :: exec (alles)
  • Boost.Python benutzerdefinierte Ausnahmeklasse
  • Gtk Mindestgröße
  • Wie kann ich bei der Arbeit mit Python Ctypes und C ++ einen Segmentierungsfehler beheben?
  • Mesa für Fenster bauen 7. Mesa 9.1
  • 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.