1

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

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

在这个例子中,我们正在处理 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' 总是有效的。任何人都可以提供建议吗?

4

1 回答 1

2

如果 astr总是失败但 aunicode总是成功,则您可能需要str在传递对象之前对其进行解码。诀窍是了解编码:如果这样做,则可以执行 (例如) a.decode('utf-8')。但是,如果您不知道,那么我理解chardet包可以进行合理的猜测:但请注意,您只能进行猜测。

于 2013-05-20T20:48:49.540 回答