On Fri, 12 Oct 2007 19:09:46 -0700, 7stud wrote:

> On Oct 12, 2:43 pm, Marc 'BlackJack' Rintsch <[EMAIL PROTECTED]> wrote:
>> You mean literally!?  Then of course I get A\xcc\x88 because that's what I
>> entered.  In string literals in source code the backslash has a special
>> meaning but `raw_input()` does not "interpret" the input in any way.
>>
> 
> Then why don't I end up with the same situation as this:
> 
>> >> > s = 'A\xcc\x88'   #capital A with umlaut
>> >> > print s           #displays capital A with umlaut

I don't get the question!?  In string literals in source code the
backslash has a special meaning, like I wrote above.  When Python compiles
that above snippet you end up with a string of three bytes, one with the
ASCII value of an 'A' and two bytes where you typed in the byte value in
hexadecimal:

In [191]: s = 'A\xcc\x88'

In [192]: len(s)
Out[192]: 3

In [193]: map(ord, s)
Out[193]: [65, 204, 136]

In [194]: print s
Ä

The last works this way only if the receiving/displaying program expected
UTF-8 as encoding.  Otherwise something other than an Ä would have been
shown.

If you type in that text when asked by `raw_input()` then you get exactly
what you typed because there is no Python source code compiled:

In [195]: s = raw_input()
A\xcc\x88

In [196]: len(s)
Out[196]: 9

In [197]: map(ord, s)
Out[197]: [65, 92, 120, 99, 99, 92, 120, 56, 56]

In [198]: print s
A\xcc\x88

>> > And what is it that your keyboard enters to produce an 'a' with an
>> > umlaut?
>>
>> *I* just hit the  key.  The one right next to the ö key.  ;-)
>>
> ...and what if you don't have an a-with-umlaut key?

I find other means to enter it.  <Alt> + some magic number on the numeric
keypad in windows, or <Compose>, <a>, <"> on Unix/Linux.  Some text editors
offer special sequences too.  If all fails there are character map
programs that show all unicode characters to choose from and copy'n'paste
them.

Ciao,
        Marc 'BlackJack' Rintsch
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to