On 2006-10-11, Leo Kislov <[EMAIL PROTECTED]> wrote: >> Unfortunately, I can't tell you how to make sys.stdin return >> unicode for use with raw_input. I tried what I thought should >> work and as you can see it messed up the buffering on stdin. >> Does anyone else know how to wrap sys.stdin so it returns >> unicode but is still unbuffered? > > Considering that all consoles are ascii based, the following > should work where python was able to determine terminal > encoding: > > class ustdio(object): > def __init__(self, stream): > self.stream = stream > self.encoding = stream.encoding > def readline(self): > return self.stream.readline().decode(self.encoding) > > sys.stdin = ustdio(sys.stdin) > > answer = raw_input() > print type(answer)
This interesting discussion led me to a weird discovery: PythonWin 2.4.3 (#69, Apr 11 2006, 15:32:42) [MSC v.1310 32 bit (Intel)] on win32. Portions Copyright 1994-2004 Mark Hammond ([EMAIL PROTECTED]) - see 'Help/About PythonWin' for further copyright information. >>> import sys >>> sys.stdout.encoding Traceback (most recent call last): File "<interactive input>", line 1, in ? File "C:\edconn32\Python24\Lib\site-packages\pythonwin\pywin\mfc\object.py", line 18, in __getattr__ return getattr(o, attr) AttributeError: encoding >>> sys.stdin.encoding >>> I'm all mindboggley. Just when I thought I was starting to understand how this character encoding stuff works. Are PythonWin's stdout and stdin implementations is incomplete? -- Neil Cerutti A song fest was hell at the Methodist church Wednesday. --Church Bulletin Blooper -- http://mail.python.org/mailman/listinfo/python-list