2016-09-29 7 views
0

방금 ​​Python으로 코딩하는 법을 배우기 시작했고 Cześć <input>을 반환하는 간단한 Python 프로그램이 있습니다. <input>은 사용자가이 Python 프로그램의 매개 변수로 CMD에 입력 할 수있는 이름입니다. 입력이 없으면 Cześć Świat을 반환합니다. 그것은 잘 작동하지만, 예를 들어 Łukasz 이름을 입력하면 Ł에서 스트라이크가 제거되고 프로그램은 Cześć Łukasz 대신 Cześć Lukasz을 반환합니다.폴란드어 문자를 CMD에 파이썬 매개 변수로 입력하는 방법은 무엇입니까?

Windows CMD에서는 CD 명령을 사용하여 Python 프로그램이 들어있는 폴더로 이동했습니다. 여기에 문을 사용하여 Python 프로그램을 실행합니다 : hello.py Łukasz.

내 스크립트 (이것은 구글의 파이썬 운동 ( source을 출신) 내가 예를 들어 'cześć'와 '안녕하세요'는 파이썬 2.7 버전과 유니 코드 문자를 작동하도록 그것을 편집하고 또한 대체) 다음과 같습니다

:

#!/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-8 또는 cp1252을 사용하면 utf-8과 함께 해당 문자를 사용하면 이전에 언급 된 예외가 발생했기 때문에 을 사용할 때 악센트를 유지하는 문자 Óó을 제외하고 폴란드 문자 (예 : Ć Ń Ń Ż Ź))가 악센트를 제거합니다.

제 질문은 어떻게 필자의 파이썬 프로그램에서 사용하기 위해 악센트 부호가있는 악센트 부호를 검색 할 수 있습니까?

나는 악센트를 제거하거나 무시할 것을 제안하는 답변을 수락하지 않겠습니다!

답변

4

This is a known limitation of Python 2 in Windows. sys.argv은 유니 코드를 허용하지 않으며 문자는 표준 ANSI 문자 페이지로 잘립니다. 파이썬 3으로 업그레이드하면 문제가 해결됩니다.

+0

와우 ... 파이썬 3은'u'some string''과 디코드/인코딩을 더 이상 필요로하지 않습니다. 단지 발음 구별 부호를 사용하고 있습니다. 고맙습니다 :) – Teysz

관련 문제