2013-08-04 3 views
0

그 안에 유니 코드 문자가 포함 된 문자열이 있고 작업을 수행해야한다고 가정 할 때 가장 좋은 방법은 무엇입니까?유니 코드, 파이썬 문자열 opts와 유니 코드, UnicodeDecodeError

s = u"blah ascii_word etc شاهد word1 word 2" # Delimited by spaces 

words = s.split(u' ') 

>>> UnicodeDecodeError: 'ascii' codec can't decode byte 0xd8 in 
    position 91: ordinal not in range(128) 

실마리가 있습니까?

또한이 코드를 텍스트 파일에 쓰고 나중에 다시 읽으 려한다면 어떻게해야합니까?

답변

1

파이썬이 기본 시스템 인코딩에 있다고 가정 할 때 변수를 선언 할 때 유니 코드로 만들고 인코딩 선언을 파일 상단에 추가하기 위해 문자열 앞에 u를 추가해야합니다. 'T는이 오류를 얻을 :

# -*- coding: utf-8 -*- 
s = u"blah ascii_word etc شاهد word1 word 2" 
words = s.split(u' ') 
print words 
# no error even tough my default system's encoding is ascii 

내가 지금 이것을 확인했고 당신도 U이 필요하지 않습니다 - 인코딩을 추가하는 문제를 해결하기에 충분하다.

당신이 당신의 시스템 인코딩을 확인하고 필요한 경우 변경해야하는 termainal에서 유니 코드 문자열 일을하려면

:

>>> import sys 
>>> sys.getdefaultencoding() 
'ascii' #I have ascii 

그런 다음 sys.setdefaultencoding()를 사용하여 조작 할 수 있습니다. 그러나 이는 운영 체제에 따라 까다로운 문제입니다.