2011-03-10 68 views
8

我正在從文件系統讀取文件名,我想將它們作爲JSON編碼數組發送。問題是文件系統上的文件可能以無效編碼存儲,我需要處理這種情況以在將文件傳遞給json.dump之前省略無效文件名,否則將失敗。在Python中檢查有效的utf8字符串

有沒有辦法檢查我的字符串(文件名)是否包含有效的utf-8字符?

+2

激我。 *爲什麼*文件沒有有效的UTF-8文件名? – 2011-03-10 11:43:21

+0

它是不是用utf-8編碼的文件名,還是文件中的數據?我很困惑。 – mouad 2011-03-10 11:45:13

+2

如何在不檢查編碼的情況下基於ID3標籤創建文件名的多功能軟件?或者安裝(使用錯誤的選項)舊的文件系統,它使用奇怪的字符編碼作爲文件名? – 2011-03-10 11:47:07

回答

17

嘗試以下方法如何?

valid_utf8 = True 
try: 
    filename.decode('utf-8') 
except UnicodeDecodeError: 
    valid_utf8 = False 

...基於回答類似的問題在這裏:How to write a check in python to see if file is valid UTF-8?

+0

如果isinstance(filename,unicode): print「unicode string」 – mithuntnt 2013-11-22 16:14:00

+0

@mithuntnt:問題不在於詢問Python字符串是否爲「unicode」;它詢問在文件系統中構成文件名的字節是否爲有效的UTF-8。 – 2013-11-22 18:16:38

+0

對我來說,我實際上在這種情況下不得不趕上UnicodeEncodeError錯誤... – 2015-05-21 01:34:33