0
我一直在努力解決我現在面臨的兩個問題。python,xmlrpc,整潔和unicode問題
最終目標是將蘋果維客服務器的內容遷移到 foswiki/twiki標記。
我發現了一個xslt樣式表,可以完成大部分的工作,並且能夠很好地完成並快速完成。我需要做的就是爲它提供格式良好的(X)HTML,這是整潔的地方 - 蘋果wiki數據結構的「內容」字符串中有很多HTML標籤,但是不完整。
使用xmlrpc introspection未公開的蘋果API變得幾乎可用,在蘋果論壇上散佈了一些提示。
正在嘗試用整齊給我:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2013' in position 121: ordinal not in range(128)
很顯然,我搜索了此錯誤信息,並發現了一些文章,包括一些在這裏#2,但他們似乎表明,它的的編碼問題我正在使用的終端。但是,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
)
)
*嘆*我們都知道着名的bug-bear,對嗎?稍後再做幾次實驗,我得到了我想要的;看起來像關於編碼問題的消息讓我吠叫了錯誤的樹。該問題的解決方案非常簡單。 'tidy.parseString( STR(頁[UID [ 'UID']] [ '內容']。編碼( 'UTF-8') ) **選項 ) ' – tink
FYI,'STR()'是不必要的。 'encode()'的結果是一個'str'。 –
感謝馬克 - 我仍然有一個陡峭的學習曲線在我面前蟒蛇;) – tink