Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Why can't I set sys.ps1 to a unicode string?

Reply
Thread Tools

Why can't I set sys.ps1 to a unicode string?

 
 
RG
Guest
Posts: n/a
 
      08-12-2010
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
 
Reply With Quote
 
 
 
 
Martin v. Loewis
Guest
Posts: n/a
 
      08-12-2010
> 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
 
Reply With Quote
 
 
 
 
RG
Guest
Posts: n/a
 
      08-12-2010
In article <i407mn$lah$(E-Mail Removed)>,
"Martin v. Loewis" <(E-Mail Removed)> 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
 
Reply With Quote
 
Thomas Jollans
Guest
Posts: n/a
 
      08-12-2010
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?

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
why why why why why Mr. SweatyFinger ASP .Net 4 12-21-2006 01:15 PM
findcontrol("PlaceHolderPrice") why why why why why why why why why why why Mr. SweatyFinger ASP .Net 2 12-02-2006 03:46 PM
Unicode digit to unicode string Gabriele *darkbard* Farina Python 2 05-16-2006 01:15 PM
unicode wrap unicode object? ygao Python 6 04-08-2006 09:54 AM
Unicode + jsp + mysql + tomcat = unicode still not displaying Robert Mark Bram Java 0 09-28-2003 05:37 AM



Advertisments