我目前在Linux(Ubuntu)下編碼/編碼有嚴重問題。我以前從來沒有必要處理這個問題,所以我不知道爲什麼這實際上不起作用!解碼/編碼問題
我從/usr/share/applications/解析*.desktop
文件,並提取通過HTTPServer顯示在Web瀏覽器中的信息。我正在使用jinja2
進行模板。
首先,我在呼叫jinja2.Template.render()
裏面說,
utf-8 cannot decode character XXX at position YY [...]
所以我提出,來自我appfind
- 模(其解析*.desktop
文件)的所有值只返回了Unicode的字符串中接收UnicodeDecodeError
。
到目前爲止,這個地方的問題已經解決了,但是在某些時候,我正在寫一個函數返回的字符串到BaseHTTPServer.BaseHTTTPRequestHandler.wfile
插槽,並且我無法修復這個錯誤,無論使用什麼編碼。
此時,寫入wfile
的字符串來自jinja2.Template.render()
,afaik返回一個unicode對象。
的離奇的部分是,它工作在我的Ubuntu 12.04 LTS卻沒有關於我的朋友的的Ubuntu LTS 11.04。但是,這可能不是原因。他有更多的應用程序,也許他們使用編碼在他們的*.desktop
文件中引發錯誤。
不過,我適當的檢查在*.desktop
文件的編碼:
data = dict(parser.items('Desktop Entry'))
try:
encoding = data.get('encoding', 'utf-8')
result = {
'name': data['name'].decode(encoding),
'exec': DKENTRY_EXECREPL.sub('', data['exec']).decode(encoding),
'type': data['type'].decode(encoding),
'version': float(data.get('version', 1.0)),
'encoding': encoding,
'comment': data.get('comment', '').decode(encoding) or None,
'categories': _filter_bool(data.get('categories', '').
decode(encoding).split(';')),
'mimetypes': _filter_bool(data.get('mimetype', '').
decode(encoding).split(';')),
}
# ...
可有人請賜教,我怎麼能解決這個問題?我已閱讀上,這樣我應該使用unicode()
總是一個答案,但是這將是這麼多的痛苦實施,並寫入wfile
的時候,我不認爲這將解決這一問題?
感謝,
尼克拉斯
當你試圖寫入'wfile'時,你會得到什麼錯誤? – JAB