Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to print chinese word in my code.. using python

Tags:

python

cjk

This is my code:

print '哈哈'.decode('gb2312').encode('utf-8')

...and it prints:

SyntaxError: Non-ASCII character '\xe5' in file D:\zjm_code\a.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

How do I print '哈哈'?

Update: When I use the following code:

#!/usr/bin/python
# -*- coding: utf-8 -*-

print '哈哈'

... it prints 鍝堝搱. That isn't what I wanted to get.

My IDE is Ulipad, is this a bug with the IDE?

Second Update:

This code will print the characters right:

#!/usr/bin/python
# -*- coding: utf-8 -*-


print u'哈哈'.encode('gb2312')

...and when I use this:

#!/usr/bin/python
# -*- coding: utf-8 -*-

a='哈哈'
print a.encode('gb2312')
Traceback (most recent call last):
  File "D:\zjm_code\a.py", line 5, in <module>
    print a.encode('gb2312')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

...or...

#!/usr/bin/python
# -*- coding: utf-8 -*-

a='哈哈'
print unicode(a).encode('gb2312')
Traceback (most recent call last):
  File "D:\zjm_code\a.py", line 5, in <module>
    print unicode(a).encode('gb2312')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

...it doesn't work. How would I print the variable a appropriately?

thanks

like image 582
zjm1126 Avatar asked Apr 22 '10 03:04

zjm1126


2 Answers

You first need to declare an encoding, as the error messages says so clearly -- it even tells you to look here for details! Your encoding is presumably gb2312.

BTW, it would be simpler (with the same encoding declaration) to do

print u'哈哈'.encode('utf-8')

and you may not even need the encode part, if your sys.stdout has an encoding attribute properly set (depends on your terminal, OS, etc).

like image 131
Alex Martelli Avatar answered Oct 25 '22 21:10

Alex Martelli


You need to specify the encoding of the python source code file, here is the coding for utf-8. It goes at the top right underneath the path the the python interpreter.

#!/usr/bin/python
# -*- coding: utf-8 -*-

If you go to the url in the error message you can find more information about specifying the encoding of a python source file.

Once you specify the encoding of the source file, you shouldn't have to decode the text.

like image 20
vfilby Avatar answered Oct 25 '22 19:10

vfilby