python、xmlrpc、tidy&;unicode问题

python、xmlrpc、tidy&;unicode问题,python,unicode,xml-rpc,tidy,Python,Unicode,Xml Rpc,Tidy,两天来,我一直在努力解决我面临的一个问题 最终目标是将apple wiki服务器的内容迁移到 foswiki/twiki标记 我找到了一个xslt样式表,它完成了大部分工作,而且做得相当好,速度也很快。使用它所需要做的就是向它提供格式良好的(X)HTML,这就是tidy的作用——apple wiki数据结构的“内容”字符串中有很多HTML标记,但并不完整 使用xmlrpc内省,无文档化的appleapi几乎可以使用,苹果论坛上散布了一些提示 现在尝试使用tidy会让我: UnicodeEncod

两天来,我一直在努力解决我面临的一个问题

最终目标是将apple wiki服务器的内容迁移到 foswiki/twiki标记

我找到了一个xslt样式表,它完成了大部分工作,而且做得相当好,速度也很快。使用它所需要做的就是向它提供格式良好的(X)HTML,这就是tidy的作用——apple wiki数据结构的“内容”字符串中有很多HTML标记,但并不完整

使用xmlrpc内省,无文档化的appleapi几乎可以使用,苹果论坛上散布了一些提示

现在尝试使用tidy会让我:

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
        )
      )
正如@oefe所建议的:

再做几次实验,我就得到了我想要的;看来关于编码问题的信息让我找错了方向。这个问题的解决办法很简单

tidy.parseString( str( pages[uid['uid']]['content'].encode('utf-8') ), **options )

唉,我们都知道著名的臭虫熊,对吧?再做几次实验,我就得到了我想要的;看来关于编码问题的信息让我找错了方向。这个问题的解决办法很简单
tidy.parseString(str(页面[uid['uid']['content'].encode('utf-8')),**选项)
FYI,
str()
是不必要的。
encode()由于您找到了解决方案,您可能希望将其作为答案发布,和/或删除您的问题。
.encode('utf-8')
帮助我解决了一个类似但不完全相同的问题
xmlrpc
Trac输出的数据为“iso-8859-1,但在unicode字符串对象中”。现在我设法将其转换为“str对象中的utf-8”,因此,也许我最终可以将其转换为正确的unicode对象…:D