簡體   English   中英

將非UTF-8字符轉換為UTF-8

[英]Converting Non-UTF-8 characters to UTF-8

我的Linux系統上有一些文件。 這些文件名可以是其他un_eng-utf8。 我想將它們從非utf8字符轉換為utf-8字符。 如何使用C庫函數或python腳本執行此操作。

如果您知道用於編碼文件名的字符編碼:

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

如果您不知道字符編碼,那么在一般情況下就無法進行不丟失數據的轉換-“ non-utf8”不夠具體,例如,如果文件名包含b'\\xae'字節那么就可以進行不同的解釋取決於文件名的編碼-它是u'®'cp1252編碼, 但相同的字節表示u'«'cp437 有諸如chardet類的模塊可以讓您猜測字符編碼,但這只是一個猜測 - “沒有純文本這樣的東西。”

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

現在,對於您遍歷的每個文件名,它將返回utf-8格式的文件名

甚至更好,請使用convmv 它將文件名從一種編碼轉換為另一種,並以目錄作為參數。 聽起來很完美。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM