2011-11-16 4 views
1

은 내가 인수를 지정하는 하나의 파이썬 스크립트가 있습니다파이썬 특수 문자의 유니 코드

parser = optparse.OptionParser() 
parser.add_option("-D", "--departure", dest="departure",default="", type="string",help="specify departure") 

을 내 스크립트에 내가 입력 한 문자열을 몇 가지로에 있습니다. 문자열이

누군가가 "뒤셀도르프"U을하라고 스크립트에서 제대로 인식되지 -D "뒤셀도르프"

을하지만 변수에 "뒤셀도르프"를 재고해야

내가 입력 할 때

variable = u + "Düsseldorf".... 나는 정말로하지 않으며 그 일을하는 법을 알지 못합니다.

도움 주셔서 감사합니다.

감사합니다.

+5

누군가가 [파이썬의 유니 코드, 완전히 신비주의] 링크를 보냈습니다. (http://farmdev.com/talks/unicode/). 어쩌면 당신은 그것을 읽어야합니다. :) –

답변

0

PEP-0264은 파이썬 스크립트에서 유니 코드를 사용하는 방법을 설명합니다.

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

print u"Düsseldorf" 

을 그리고 BOM없이 UTF-8로 해결하는 것을 잊지 마세요 :

또는 게으른 사람을 위해, 당신의 스크립트를 시작합니다.

0

뿐만 아니라 당신이 ü 문자를 표시 할 수 파이썬 소스에 대한 문자 인코딩을 지정해야합니까 :

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

을하지만 당신은 또한 적어도 유닉스에서 (행 인수를 명령을 명심해야합니다, 나는 Windows 용이라고 말할 수 없다)는 바이트이다. 따라서 옵션을 문자 (유니 코드) 문자열이 아닌 바이트 문자열로 지정해야합니다. 예를 들어

:

parser.add_option("-D", "--departure", dest="departure", 
default=u"Düsseldorf".encode('UTF-8'), 
type="string",help="specify departure") 

이제 기본 인수는 당신이 add_option 방법에 통과 한 모든 다른 인수와 같은 바이트 문자열입니다.

또한 누군가가이 문자열을 터미널에 입력하면 UTF-8의 터미널 문자 인코딩으로이를 수행해야합니다. 다른 터미널 문자 인코딩을 사용하는 경우 다른 바이트 문자열이 명령 줄에 표시됩니다. 이것은 단순히 유닉스가 어떻게 작동 하는지를 알려주고 있으며, 파이썬은 그것을 바꾸기위한 힘이 없다.

+1

어떻게 할 수 있습니까? myvar = "Düsseldorf"then myvar2 = umyvar? –

+0

Python 2에서 'myvar = "Düsseldorf"문은'u' 접두어를 사용하지 않고 바이트 문자열을 지정하고 ASCII는 리터럴 바이트 문자열을 암시 적으로 사용하기 때문에 실제로 유효하지 않습니다. – wberry

+0

파이썬 2에서'this like these strings '는 바이트 문자열이고'this like like this'는 문자 스트링입니다. 파이썬 3에서'this like these strings '는 문자 스트링이고'b'strings like this'는 바이트 스트링이다. 두 경우 모두 바이트 문자열은 ASCII를 사용하여 암시 적으로 해석되므로 'ü'와 같은 문자는 바이트 문자열 리터럴에 나타나서는 안됩니다. – wberry