python,xmlrpc,整洁& unicode问题

时间:2012-05-22 22:11:29

标签: python unicode xml-rpc tidy

我一直试图解决我现在面临的问题两天。

最终目标是将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
        )
      )

1 个答案:

答案 0 :(得分:1)

正如@oefe所建议的那样:

稍后我会得到我想要的一些实验;看起来像关于编码问题的消息让我咆哮了错误的树。问题的解决方案非常简单。

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