2013-12-17 1 views
1

Spyder를 내 편집기로 사용하여 BeautifulSoup을 사용하여 구문 분석하고 있습니다 (둘 다 훌륭한 도구 임). 코드는 스파이더에 잘 실행,하지만 난 터미널에서 평 파일을 실행하려고 할 때, 나는 오류 얻을 : 스파이더가 zypper 사용하여 설치와 함께, 나는 리눅스 서버에서 오픈 수세를 실행 해요UnicodeEncodeError - Spyder에서 작동하지만 터미널에서 실행되지 않을 때

file = open('index.html','r') 
soup = BeautifulSoup(file) 
html = soup.prettify() 
file1 = open('index.html', 'wb') 
file1.write(html) 

UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position 5632: ordinal not in range(128) 

합니다. 누구나 문제에 대한 제안 사항이 있습니까? 많은 감사.

file1.write(html.encode('utf-8')) 

모든 파일 속성 file.encoding을 가지고 참조 : 때문에 (파일에 쓰기 즉) 결과를 출력하기 전에 먼저 인코딩해야하기 때문이다

답변

1

. 문서 인용하기 :

file.encoding

The encoding that this file uses. When Unicode strings are written to a file, they will be converted to byte strings using this encoding. In addition, when the file is connected to a terminal, the attribute gives the encoding that the terminal is likely to use (that information might be incorrect if the user has misconfigured the terminal). The attribute is read-only and may not be present on all file-like objects. It may also be None, in which case the file uses the system default encoding for converting Unicode strings.

마지막 문장보기 soup.prettify은 유니 코드 객체를 반환하고이 오류가 발생하면 sys.getdefaultencoding()ascii이므로 Python 2.7을 사용하고 있다고 확신합니다.

희망이 도움이됩니다.