Prev: Beyond the moratorium
Next: python ide for ubuntu
From: RG on 12 Aug 2010 02:50 More precisely, why does sys.ps1 not appear if I set it to a unicode string? This problem is hard for me to describe here because my newsreader is not properly unicode enabled, but here's the gist of it: Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) [GCC 4.2.1 (Apple Inc. build 5646)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> First, let's make sure our encodings are set properly: >>> import sys >>> sys.stdin.encoding 'utf-8' >>> sys.stdout.encoding 'utf-8' Looks good. Now, let's make two unicode strings, identical except for one character: >>> s1 = u'%%% %%% ' >>> s2 = u'%%% ' + u'\u262f' + '%%% ' >>> print s1 %%% %%% >>> print s2 %%% /&%%% If this were a properly unicode-enabled newsreader you would see a yin-yang symbol in the middle of s2. Now the weird part: >>> sys.ps1 = s1 %%% %%% sys.ps1 = s2 # This is as expected print s1 # But this isn't. There's no prompt! %%% %%% # Everything still works print s2 %%% /&%%% sys.ps1 = s1 # If we reset sys.ps1 we get our prompt back %%% %%% sys.ps1 = '>>> ' >>> sys.ps1 = u'>>> ' >>> So... why does having a non-ascii character in sys.ps1 make the prompt vanish? (If you're wondering why I care, I want to connect to an interactive python interpreter from another program, and I want a non-ascii delimiter to unambiguously mark the end of the interpreter's output on every interaction.) Thanks, rg
From: Martin v. Loewis on 12 Aug 2010 03:26 > So... why does having a non-ascii character in sys.ps1 make the prompt > vanish? I can't pinpoint it to a specific line of code. Most likely, it tries to encode the prompt as ASCII before writing it to stdout. That fails, and it silently ignores the error. FWIW, this is fixed in Python 3. Regards, Martin
From: RG on 12 Aug 2010 13:36 In article <i407mn$lah$1(a)online.de>, "Martin v. Loewis" <martin(a)v.loewis.de> wrote: > > So... why does having a non-ascii character in sys.ps1 make the prompt > > vanish? > > I can't pinpoint it to a specific line of code. Most likely, it tries > to encode the prompt as ASCII before writing it to stdout. That fails, > and it silently ignores the error. > > FWIW, this is fixed in Python 3. Guess it's time to upgrade. :-) Thanks! rg
From: Thomas Jollans on 12 Aug 2010 15:36 On Thursday 12 August 2010, it occurred to RG to exclaim: > %%% /&%%% > > If this were a properly unicode-enabled newsreader you would see a > yin-yang symbol in the middle of s2. Are you sure about that? Now maybe the mailing list gateway is messing things up, but I rather suspect your newsreader (or USENET server) is sending out nonsense. After all, Unicode usually works around here. Some excerpts from the message, as I received it: Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit [...] >>> print s2 %%% /&%%% No quoted-printable. No UTF-7. Just three completely random characters?
|
Pages: 1 Prev: Beyond the moratorium Next: python ide for ubuntu |