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?

  • Wie man Screenshot (high fps) in Linux (Programmierung)
  • Wie baue ich eine python-Zeichenfolge aus einem ctype struct?
  • Swig Downcasting von Base * zu abgeleitete *
  • Lesen Sie eine sehr große Single-Line-Txt-Datei und teilen Sie sie auf
  • Große POST-Daten sind bei der Verwendung von Django / PyISAPIe / IIS beschädigt
  • Wie konvertiert man einen gdb-Wert zu einem python-Ziffernobjekt beim Debuggen von C-Programm
  • 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.