[英]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.