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 Array von C ++ - Funktion auf Python mit Ctypes zurückgibt
  • Was kann mein Gleitkomma-Steuerwort hinter meinem Rücken ändern?
  • Digitale PDF-Dateien signieren
  • SWIG - Wrap C String Array auf Python-Liste
  • Wie baue ich OpenCV mit TBB auf Raspberry Pi?
  • CcTalk Münzakzeptor keine Reaktion bei eingelegter Münze
  • 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.