2011-10-13 2 views
2

I 파일로 작성된 파이썬 서버 STDIO 리디렉션이있어 :배시 재 부호화 에러

python server.py &> file 

입력은 XMLRPC 라이브러리를 사용하는 client.py 통해 전송된다. UTF-8 입력을 전송하면 아무것도 할 수 없기 때문에 UnicodeEncodeError가 발생합니다.

여기에 호기심이 있습니다. server.py의 stdoutput을 리디렉션하지 않으면 오류가 발생하지 않습니다.

로켈이 en_US.utf8로 설정되고 bash가 유니 코드를 올바르게 표시하면 클라이언트가 텍스트를 인코딩합니다. 나는 무슨 일이 일어나는지 조금이라도 생각하지 못했습니다.

+0

어떤 오류가 발생합니까? – sth

+0

'server.py'의 관련 코드를 게시하면 도움이 될 수 있습니다. – brc

+0

비슷한 해결책이있는 비슷한 질문이 있습니다. http://stackoverflow.com/questions/492483/setting-the-correct-encoding-when-piping-stdout-in-python – Ander2

답변

0

파이썬 코드는 관련이 없으며 SimpleXMLRPCServer 모듈을 수정하지 않습니다.

리디렉션에 의해 생성 된 파일은 us-ascii이며 unicode 문자가 삽입되면 utf-8이됩니다.이 코드는 XMLRPC 모듈에서 먼저 처리되므로이 경우 작동하지 않습니다. UnicodeDecodeError가 발생합니다.

리디렉션을위한 파일을 먼저 만들려고했지만 iconv -f us-ascii -t utf-8을 사용하더라도 파일 내에 유니 코드 시퀀스가 ​​없으면 파일이 us-ascii로 유지됩니다.

아이디어는 작동하지 않는 파이썬 코드를 수정하지 않고 기본적인 "조용한 모드"를 만드는 것이 었습니다. 따라서 나는 stdout을 codecs.open ("silent.log", "w", encoding)에 매핑하는 OptionParser를 만들었습니다. = "utf-8"). 이것은 잘 작동합니다.