我一直试图解决我现在面临的问题两天。
最终目标是将Apple wiki服务器的内容迁移到 foswiki / twiki markup。
我找到了一个完成大部分工作的xslt样式表,并且运行得相当好,速度也快。我需要做的就是利用它提供格式良好的(X)HTML,这是整洁的地方 - 内容" apple wiki datastructure的字符串中包含大量HTML标记,但不完整。
使用xmlrpc内省,在苹果论坛上散布的一些提示几乎可以使用未记录的苹果API。
现在尝试使用整洁给我:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 121: ordinal not in range(128)
显然我搜索了这个错误信息,并发现了一些文章,包括Stackoverflow上的一些文章,但它们似乎暗示它是我使用的终端的编码问题。但是,LANG = en_US.UTF-8在这里,所以这不能解决我的问题。
我发现了一篇建议摆脱BOM的文章,但在这样做的过程中,我创建了一条新的错误消息,这对我来说毫无意义:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 0: ordinal not in range(128)
以下是相关的代码段:
pages = {}
paths = s.groupsForSession(session_id) # paths is a list of groups that user can read on that server
for aPath in paths:
entries = s.wiki.getEntries(session_id, aPath)
# entries = s.search.getEntries(session_id, aPath)
pprint.pprint(entries)
for uid in entries:
try:
entry = s.wiki.getEntryWithUID(session_id, uid['uid'])
except Exception, e:
print e.faultString
raise Exception
pages[uid['uid']] = entry
pprint.pprint( pages[uid['uid']]['content'])
print(
tidy.parseString(
str(
unicode(
pages[uid['uid']]['content'].strip(codecs.BOM_UTF8), 'utf-8'
)
),
**options
)
)
答案 0 :(得分:1)
正如@oefe所建议的那样:
稍后我会得到我想要的一些实验;看起来像关于编码问题的消息让我咆哮了错误的树。问题的解决方案非常简单。
tidy.parseString( str( pages[uid['uid']]['content'].encode('utf-8') ), **options )