2013-08-18 2 views
0

내 인생에서 나는 알아낼 수 없다. 메시지를 추출하려고하는데 .json 파일에서 말한 것이다.파이썬에서 %로 문자열을 포맷 할 때 유니 코드 오류 코드

print '<%s> %s' % (x['sender_id'], x['content'][0]['text']) 

"x는"내가 알아야 할 것들을 포함하는 딕셔너리입니다 : 내가 여기에 그 정보를 공개 할 수는 없지만,이 그것을 수행하는 라인이다. 각 행의 출력과 같이 볼 수 있습니다 :

<username> The quick brown fox jumps over the lazy dog. 

많은 IRC 로그에서 볼 수있다. 어쨌든 튜플에있는 두 문자열에는 모두 유니 코드가 있습니다. 즉, 공식적으로는 파이썬 유니 코드 유형입니다. 나는 확인했다. 같은 대신이 글을 쓰는 등

내가 시도
UnicodeEncodeError: 'ascii' codec can't encode character u'\U0001f52b' in position 26: ordinal not in range(128) 

많은 것들 :

print u'<%s> %s' % (x['sender_id'], x['content'][0]['text']) 

또는 :

print '<%s> %s' % (x['sender_id'], x['content'][0]['text']).encode('utf-8') 
내가 그 문자열로 포맷을 시도 할 때, 결과는 같은 일이 항상

그리고 나는이 두 가지 전략을 조합 해 보았습니다. 그러나 은 없습니다. 나는 작품을 시험해 보았습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

stdoutprint (ASCII 인코딩 사용)이 기록되어 문제의 원인이 될 수 있습니다. sys.stdout.encoding의 값을 확인하십시오. ASCII 문자열 만 출력하거나 기본 stdout 인코딩을 PYTHONIOENCODING env 변수가있는 UTF-8처럼 좀 더 합리적인 것으로 설정하십시오. 예 :

$ PYTHONIOENCODING=utf-8 python myprogram.py 
+0

플롯이 실제로 두꺼워졌습니다. 나는이 문제가 단지 한 인물이라는 것을 알아 챘다. 다른 사람들은 불평없이 끝까지지나 갔다. 또한 당신의 충고는 효과가 없었습니다. 어쨌든 고맙습니다. 파이썬에 버그가 있거나 변형 된 또는 독점적 인 유니 코드 캐릭터가있을 수 있다고 생각하기 시작했습니다. 분명히 그것은 권총의 이미지라고 생각됩니다 : http://www.iemoji.com/view/emoji/376/events/pistol-or-revolver – Sadiq

+0

'sys.stdout.encoding'이란 무엇입니까? –

+0

기본적으로 없음입니다. 방금 bash 역사를 살펴본 결과, PYTHONIOENCODING 대신 PYTHONENCODING을 작성했음을 알게되었습니다. 이제 작동합니다. – Sadiq

관련 문제