How to print this character u'\u20ac' to DOS terminal

人言落日是天涯,望极天涯不见家 kelvin.you at gmail.com
Wed May 30 03:05:36 EDT 2007


On 5ÔÂ30ÈÕ, ÏÂÎç1ʱ23·Ö, "Martin v. Lo"wis" <mar... at v.loewis.de> wrote:
> ÈËÑÔÂäÈÕÊÇÌìÑÄ£¬Íû¼«ÌìÑIJ»¼û¼Ò schrieb:
>
> > Who could explain the follow issue ?
> >>>> print u'\u0394'
> > ¦¤
> >>>> print u'\u20ac'
> > Traceback (most recent call last):
> >   File "<stdin>", line 1, in <module>
> > UnicodeEncodeError: 'gbk' codec can't encode character u'\u20ac' in
> > position 0:
> > illegal multibyte sequence
>
> > My terminal is cmd.exe under windows XP.
> > what's the different between the two character ? what can I do if I
> > want to print the u'\u20ac'?
>
> The problem is that your terminal uses (some form of) the GBK encoding;
> seehttp://zh.wikipedia.org/wiki/GBKfor details on GBK.
>
> It seems that GBK (or, rather, code page 936) supports the delta
> character, but not the euro sign.
>
> To change that, you can use "chcp" in your terminal window.
> For example, if you do "chcp 850", you should be able to
> display the euro sign (but will simultaneously use the ability
> to display the letter delta, and the chinese letters).
>
> I don't know whether the terminal supports an UTF-8 code
> page; you can try setting the terminal's code page to
> 65001 (which should be UTF-8).
>
> Regards,
> Martin

Thanks, but it seems not work yet.

----------------------------------------------------
C:\WINDOWS>chcp 850
Active code page: 850

C:\WINDOWS>python
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
(Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'\u20ac'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\encodings\cp850.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u20ac'
in position
 0: character maps to <undefined>


C:\WINDOWS>chcp 65001
Active code page: 65001

C:\WINDOWS>python
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit
(Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print u'\u20ac'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
LookupError: unknown encoding: cp65001
-----------------------------------------------
I find that the u'\u20ac' related 'mbcs' encode is 0x80, I could print
it directly
>>> print '\x80'
€
>>>

But the string contained the u'\u20ac' is get from remote host. Is
there any method to decode it to the local 'mbcs'?




More information about the Python-list mailing list