a question about Chinese characters in a Python Program

Lie Ryan lie.1296 at gmail.com
Mon Oct 20 12:51:38 EDT 2008


On Sun, 19 Oct 2008 22:32:20 -0700, est wrote:

> On Oct 20, 10:48 am, Liang Chen <c... at uga.edu> wrote:
>> Hope you all had a nice weekend.
>>
>> I have a question that I hope someone can help me out. I want to run a
>> Python program that uses Tkinter for the user interface (GUI). The
>> program allows me to type Chinese characters, but neverthelss is unable
>> to show them up on screen. The follow is some of the error message I
>> received after I logged off the program:
>>
>> "Could not write output: <type "exceptions: UnicodeEncodeError'>,
>> 'ascii' codec can't encode characters in position 0-1: ordinal not in
>> range (128)"
>>
>> Any suggestion will be appreciated.
>>
>> Sincerely,
>>
>> Liang
>>
>> Liang Chen,Ph.D.
>> Assistant Professor
>> University of Georgia
>> Communication Sciences and Special Education 542 Aderhold Hall
>> Athens, GA 30602
>>
>> Phone: 706-542-4566
> 
> Personally I call it a serious bug in python, but sadly most of python
> community members do not agree
> . It may be a internal str() that caused this issue.

No, it's not a bug, it's a correct behavior that is the most correct 
behavior, although some people might not be able to immediately grab the 
reasons why it is correct and why defining ascii as range(256) is plain 
wrong.

Anyway, if you haven't noticed, str() is capable of emitting all 
characters in range(256), e.g. str('\xff'). ascii though, doesn't allow 
that, as ascii is a 7-bit encoding, latin-1, ansi, and other ascii 
extensions are 8-bit encodings, but not ascii itself.




More information about the Python-list mailing list