土耳其字符编码

时间:2014-11-11 09:30:54

标签: python string encoding utf-8 turkish

我尝试从不同的列表项创建新句子。当我用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)

4 个答案:

答案 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输出编码的环境。