2011-09-22 52 views
0

我已經有文件名"SSE-Künden, SSE-Händler.pdf"其中具有這兩個unicode char (ü,ä)當我打印在Python解釋這個文件名稱中的Unicode值越來越轉換成相應的ASCII值我想'SSE-K\x81nden, SSE-H\x84ndler.pdf',但我想處理的ASCII字符

測試目錄包含名稱的pdf文件 'SSE-Künden,SSE-Händler.pdf'

我試圖這樣: 路徑= 'C:\測試' 一個,b,C在os.walk(路徑): print c

['SSE-K\x81nden, SSE-H\x84ndler.pdf'] 

如何轉換這種ASCII字符到其各自的Unicode丘壑,我想顯示在解釋原來的名稱("SSE-Künden, SSE-Händler.pdf"),也writeing到某些文件,因爲它is.how做我實現這一目標。我正在使用Python 2.6和Windows操作系統。

謝謝。

+1

是您的終端會話的字符編碼設置爲UTF-8? – user183037

+0

抱歉,但如何驗證。 – Shashi

+0

如果您使用Ubuntu,終端(從菜單) - >設置字符編碼 – user183037

回答

3

假設你的終端支持顯示字符,遍歷文件列表和單獨打印出來(或使用Python 3,它顯示的Unicode中的列表):

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> for p,d,f in os.walk(u'.'): 
... for n in f: 
... print n 
... 
SSE-Künden, SSE-Händler.pdf 

另外請注意我用了一個Unicode字符串( ü'。')爲路徑。這指示os.walk返回Unicode字符串,而不是字節字符串。處理非ASCII文件名時,這是一個好主意。

在Python 3名的字符串是Unicode的默認和非ASCII字符顯示給用戶,而不是作爲轉義代碼顯示:

Python 3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> for p,d,f in os.walk('.'): 
... print(f) 
... 
['SSE-Künden, SSE-Händler.pdf'] 
+0

對不起,我沒有提到之前,我使用Python 2.6和Windows操作系統,IPYthon – Shashi

+0

他的問題是如何以他們的本地形式顯示unicode字符(非字節格式) – user183037

+0

是的,這是偉大的同樣想我在Python 2.6 – Shashi

1
for a,b,c in os.walk(path): 
    for n in c: 
     print n.decode('utf-8') 
+0

+1:這應該工作如果他的終端會話被設置爲顯示unicode。 – user183037

+0

在windows終端如何設置unicode。 – Shashi

+2

要將windows終端設置爲unicode,請參閱http://stackoverflow.com/questions/5419/python-unicode-and-the-windows-console – six8