如何在我的代码中打印中文单词。。使用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 '哈哈'