我尝试从不同的列表项创建新句子。当我用unicode打印它时给出错误。 我可以正常打印(没有unicode)。当我尝试将其发布到网站时,其发出同样的错误。我想,如果我能用unicode修复它,它会在将它发布到网站时起作用。
p=['Bu', 'Şu']
k=['yazı','makale']
t=['hoş','ilgiç']
connect='%s %s %s'%(p[randint(0,len(p)-1)],k[randint(0,len(k)-1)],t[randint(0,len(t)-1)])
print unicode(connect)
And the output is :
Error: UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 0: ordinal not in range(128)
答案 0 :(得分:0)
您应该在脚本顶部放置这样的标题,并在系统上指定编码。 建议您阅读更多内容,因为您可能经常遇到这些问题。一些resources here。
#!/usr/bin/env python
# -*- coding: latin-1 -*-
请务必替换上述' latin-1'适合你的。
答案 1 :(得分:0)
首先,您应该放在脚本# -*- coding: utf-8 -*-
的顶部,以便能够在脚本中使用非ascii字符。同时打印解码str到unicode将解决您的问题。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from random import randint
p=['Bu', 'şu']
k=['yazı','makale']
t=['hoş','ilginç']
connect='%s %s %s'%(p[randint(0,len(p)-1)],k[randint(0,len(k)-1)],t[randint(0,len(t)-1)])
print connect.decode('utf-8')
答案 2 :(得分:0)
>>> p=['Bu', 'Şu']
>>> k=['yazı','makale']
>>> t=['hoş','ilgiç']
>>> connect='%s %s %s'%(p[randint(0,len(p)-1)],k[randint(0,len(k)-1)],t[randint(0,len(t)-1)])
>>> print connect.decode('utf-8')
Şu makale ilgiç
答案 3 :(得分:0)
使用非ASCII字符时,请在文件顶部指定源代码的编码。然后,对所有文本使用Unicode字符串:
#coding:utf8
from random import randint
p=[u'Bu', u'Şu']
k=[u'yazı', u'makale']
t=[u'hoş', u'ilgiç']
connect= u'%s %s %s'%(p[randint(0,len(p)-1)],k[randint(0,len(k)-1)],t[randint(0,len(t)-1)])
print connect
输出:
Şu yazı ilgiç
如果您的执行环境不支持该字符集,您仍然可以获得UnicodeEncodeError
。理想情况下使用支持UTF-8输出编码的环境。