2012-12-20 4 views
1

일부 문자열 조작을 다루고 데이터베이스에 넣으려고합니다. 그럼 난 (나는 그것이 독일어의 생각)이 발생 : 나는 데이터베이스에 넣어 후django/python : 파이썬은 영어 이외의 문자를 어떻게 인코딩합니까?

Sichere Administration von VoIP-Endgeräten 

, 나는 영어가 아닌 문자가되었다는 것을 깨달았다

Sichere Administration von VoIP-Endger\u00e4ten 

나는 데이터베이스에서 가져올 때 이 문자열을 subprocess.Popen()에 전달하면 오류가 발생합니다.

TypeError: execv() arg 2 must contain only strings 

내 질문은 어떻게됩니까? 또한 아무도 인코딩/디코딩 물건을 배우는 방법에 대한 유용한 참고가 있습니까? 감사.

답변

1

예, Python Unicode HOWTO을 읽으십시오. 당신은 인코딩 된 텍스트와 유니 코드 텍스트를 다루고 있습니다.

첫 번째 문자열은 UTF-8 데이터 라틴-1으로 해석되고, 두 번째 문자열은 유니 코드 문자열로 먼저 인코딩없이 Popen()에 전달 될 수 없습니다

>>> print u'\u00e4' # A unicode escape code for the latin-1 character ä 
ä 
>>> u'\u00e4'.encode('utf8') # The same character encoded to UTF-8 
'\xc3\xa4' 
>>> print u'\u00e4'.encode('utf8').decode('latin1') # Misinterpreted as Latin-1 
ä 

당신은 파악해야합니다 외부 프로세스가 처리 할 수있는 인코딩은 .Popen()으로 전달하기 전에 데이터에서 .encode()으로 전화하십시오.

관련 문제