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

R

RG

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:
'utf-8'

Looks good. Now, let's make two unicode strings, identical except for
one character:
%%% /&%%%

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 = 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 = '>>> '
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
 
M

Martin v. Loewis

So... why does having a non-ascii character in sys.ps1 make the prompt

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
 
R

RG

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.[/QUOTE]

Guess it's time to upgrade. :)

Thanks!

rg
 
T

Thomas Jollans

%%% /&%%%

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

[...]
%%% /&%%%

No quoted-printable. No UTF-7. Just three completely random characters?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,756
Messages
2,569,533
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top