如何在我的代码中打印中文单词。。使用python

如何在我的代码中打印中文单词。。使用python,python,cjk,Python,Cjk,这是我的代码: print '哈哈'.decode('gb2312').encode('utf-8') …并打印: 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 我怎么打印哈哈'? 更新:当我使用以下代码时: #!/usr/

这是我的代码:

print '哈哈'.decode('gb2312').encode('utf-8')
…并打印:

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
我怎么打印哈哈'?

更新:当我使用以下代码时:

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

print '哈哈'
。。。它打印
鍝堝搱。那不是我想要的

我的IDE是Ulipad,这是IDE的错误吗

第二次更新:

此代码将正确打印字符:

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


print u'哈哈'.encode('gb2312')
…当我使用这个时:

#!/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)
#/usr/bin/python
#-*-编码:utf-8-*-
a=哈哈'
打印a.encode('gb2312')
回溯(最近一次呼叫最后一次):
文件“D:\zjm_code\a.py”,第5行,在
打印a.encode('gb2312')
UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xe5:序号不在范围内(128)
……或者

#!/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)
#/usr/bin/python
#-*-编码:utf-8-*-
a=哈哈'
打印unicode(a).encode('gb2312')
回溯(最近一次呼叫最后一次):
文件“D:\zjm_code\a.py”,第5行,在
打印unicode(a).encode('gb2312')
UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xe5:序号不在范围内(128)
…它不起作用。如何适当地打印变量
a


谢谢

您需要指定python源代码文件的编码,下面是utf-8的编码。它位于python解释器路径的右上方

#!/usr/bin/python
# -*- coding: utf-8 -*-
如果转到,可以找到有关指定python源文件编码的更多信息


一旦指定了源文件的编码,就不必对文本进行解码。

您首先需要声明编码,因为错误消息非常清楚地说明了这一点——它甚至告诉您要查找详细信息!您的编码大概是
gb2312

顺便说一句,这样做会更简单(使用相同的编码声明)


如果您的
sys.stdout
正确设置了
encoding
属性(取决于您的终端、操作系统等),您甚至可能不需要
encode
部分。

以下代码适用于我:

# coding: utf8
print u'哈哈'.encode('utf-8')

#coding
注释告诉Python文件本身的编码,因此您可以直接在其中嵌入UTF-8字符。如果从Unicode字符串开始,则无需对其进行解码和重新编码。

根据Will McCutchen的回答,这同样有效:

# coding: utf8
print '哈哈'

不能对unicode字符进行编码。Encode用于将所有以unicode编码的字符转换为其他代码样式。它不能用于unicode字符

在有争议的方式中,解码只能用于将未编码为unicode的字符转换为unicode字符

如果在字符串前声明一个带有“u”字符的字符串,则将得到一个用unicode编码的字符串。您可以使用isinstance(str,unicode)检测str是否以unicode编码

请尝试下面的代码。提示:在中文版Windows中,默认代码样式为“gbk”

>>>a=哈哈'
>>>b=u'哈哈'
>>>iInstance(a,unicode)

>>>iInstance(b,unicode)
真的

>>>a
“\xb9\xfe\xb9\xfe”
>>>b
u'\u54c8\u54c8'

>>>a.解码('gbk')
u'\u54c8\u54c8'
>>>a_unicode=a.decode('gbk')
>>>a_unicode
u'\u54c8\u54c8'

>>>打印unicode字符
哈哈
>>>a_unicode.encode('gbk')==a
正确
>>>a_unicode==b
真的

>>>a.encode('gbk')
回溯(最近一次呼叫最后一次): 文件“”,第1行,在 UnicodeDecodeError:“ascii”编解码器无法解码位置0中的字节0xb9:序号不在范围内(128)

>>>b.解码('gbk')
回溯(最近一次呼叫最后一次): 文件“”,第1行,在 UnicodeEncodeError:“ascii”编解码器无法对位置0-1中的字符进行编码:序号不在范围内(128)


您应该检查终端字符编码

在我的终端上,首先我将字符编码设置为utf-8,一切正常


当我将其设置为GBK时,结果是'鍝堝搱'.

作为同胞们的建议,你们应该投更多的票,三思而后行,表现得更好:-)
# coding: utf8
print '哈哈'