私は2日間、直面している問題を回避しようとしています。
最終的な目標は、AppleWikiサーバーのコンテンツをfoswiki/twikiマークアップに移行することです。
私は、ほとんどの作業を実行し、それを適度にうまく、そして高速に実行するxsltスタイルシートを見つけました。それを利用するために私がする必要があるのは、整形式の(X)HTMLをフィードすることだけです。これは、整頓されたものです。アップルwikiデータ構造の「コンテンツ」文字列には多くのHTMLタグが含まれていますが、不完全です。
xmlrpcイントロスペクションを使用すると、文書化されていないApple APIがほぼ使用可能になり、Appleフォーラムにいくつかのヒントが散らばっています。
整頓されたものを使おうとすると、次のようになります。
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
)
)