2016-09-29 41 views
0

我剛剛開始學習Python編碼,我有一個簡單的Python程序,返回Cześć <input>,其中<input>是用戶可以輸入到CMD中作爲此Python程序參數的名稱。如果沒有輸入,它會返回Cześć Świat。它工作正常,但當我例如輸入名稱Łukasz它剝離從Ł罷工和程序返回Cześć Lukasz而不是正確的Cześć Łukasz如何將波蘭字符作爲Python參數輸入到CMD中?

在Windows CMD中,我使用CD命令轉到包含Python程序的文件夾,並在那裏使用語句hello.py Łukasz執行Python程序。

我的劇本是這樣的(它最初是從谷歌的Python的練習(source)和我一起例如「cześć」編輯它,使之成爲與Python 2.7版本的Unicode字符工作,也取代「你好」):

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import sys 

# Define a main() function that prints a little greeting. 
    def main(): 
    # Get the name from the command line, using 'World' as a fallback. 
    if len(sys.argv) >= 2: 
    name = sys.argv[1].decode('cp1252') 
    else: 
    name = u'Świat' 
    str = u'Cześć '+name 
    print str.encode('utf-8') 

# This is the standard boilerplate that calls the main() function. 
if __name__ == '__main__': 
    main() 

本來我utf-8解碼sys.argv[1],但不知何故,當我用字母Óó它會拋出一個醜陋異常(見this SO answer)。使用utf-8cp1252導致波蘭語字母(例如ĄĆĘĄĆĘŃŹ)被刪除其口音,除了字母Óó似乎在使用cp1252時保持其口音,因爲使用該字母utf-8導致了前面提到的異常。

所以我的問題是,如何檢索字符串完整與來自CMD的口音用於我的Python程序?

我不接受提示刪除/忽略口音的答案!

回答

4

This is a known limitation of Python 2 in Windowssys.argv不接受Unicode和字符被截斷到標準的ANSI字符頁面。升級到Python 3將解決您的問題。

+0

哇... Python 3甚至不需要'''''一些字符串'​​'和解碼/編碼了,它只是接受我正在使用變音符!謝謝 :) – Teysz