2016-09-29 9 views
0

私はPythonでコーディングを学び始めました。Cześć <input>を返すシンプルなPythonプログラムがあります。<input>は、このPythonプログラムのパラメータとしてユーザーがCMDに入力できる名前です。入力がない場合は、Cześć Światを返します。それはうまく動作しますが、例えばŁukaszという名前を入力すると、Łからストライキが取り除かれ、プログラムは正しいCześć Łukaszの代わりにCześć Lukaszを返します。ポーランド文字をPythonパラメータとしてCMDに入力する方法は?

WindowsのCMDでは、CDコマンドを使用してPythonプログラムが格納されているフォルダに移動しました。そこで、文を使用してPythonプログラムを実行します:hello.py Łukasz

私のスクリプトは、この(それがGoogleのPythonの演習(source)出身で、私はそれがPythonのバージョン2.7とUnicode文字のために動作させるために、それを編集し、また置き換え「ハロー」例えば「cześć」が)のようになります。

#!/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-8sys.argv[1]を復号し、私は手紙Óóを使用何とかするときには、(this SO answerを参照)醜い例外をスローします。 utf-8またはcp1252のいずれかを使用すると、utf-8でその文字を使用すると前述の例外が発生したため、を使用するとアクセントを維持するような文字Óóを除いて、ポーランド語の文字(アクセント記号など)が取り除かれます。

私の質問は、どのように私のPythonプログラムで使用するようにCMDのアクセント記号をそのまま引き出すのですか?

アクセントを削除する/無視することをお勧めする回答は受け付けません!

答えて

4

This is a known limitation of Python 2 in Windowssys.argvはUnicodeを受け入れず、文字は標準のANSI文字ページに切り捨てられます。 Python 3にアップグレードすることで問題は解決します。

+0

うわー... Python 3は 'u'some string''とデコード/エンコードがもう必要なくても、それはちょうど私が発音区別記号を使っていることを受け入れるだけです!ありがとうございました :) – Teysz

関連する問題