试图理解Python Unicode异常

时间:2013-05-20 20:34:59

标签: python unicode python-2.7 python-unicode

我有一个未指定类型的字符串对象。它将匹配types.StringTypes,但可以是type.StringType或type.UnicodeType - 我不确定我会收到什么。我无法控制进来的内容。

当我在字符串类型中有非ascii字符并将调用传递给misaka(这是一个日落解析器)时,我的问题就出现了。

在这个例子中,我们正在处理unichr(8250)/ u'\ u203a',这在我的错误日志中引起了这么多次......

a = "›"
b = u"›"

print type(a) # <type 'str'>
print type(b) # <type 'unicode'>

print a # fine
print b # fine

import misaka

markdown_renderer = misaka.HtmlRenderer()
renderer = misaka.Markdown( markdown_renderer )

try:
    print renderer.render( a )
    #this will fail
    print "GOOD a"
except:
    print "FAILED a"

try:
    print renderer.render( b )
    #this will pass
    print "GOOD b"
except:
    print "FAILED b"

我无法弄清楚如何将“a”对象变成misaka不会有问题的东西。 'b'总能奏效。任何人都可以提出建议吗?

1 个答案:

答案 0 :(得分:2)

如果str总是失败但是unicode总是成功,那么你可能需要在传递它之前解码你的str对象。诀窍是知道编码:如果你这样做,你可以做(​​例如)a.decode('utf-8')。但是如果你不知道,那么我理解chardet包有合理的猜测作用:但请注意猜测是你所能做的。