저는 현재 리눅스 (Ubuntu)에서 코딩/인코딩에 심각한 문제가 있습니다. 이전에는 그렇게 할 필요가 없었기 때문에 이것이 실제로 작동하지 않는 이유를 전혀 알지 못합니다!디코딩/인코딩 문제
나는 /usr/share/applications/에서 파일을 구문 분석하고 HTTPServer를 통해 웹 브라우저에 표시된 정보를 추출합니다. 나는 템플릿으로 jinja2
을 사용하고 있습니다.
먼저, 난 단지 유니 코드 문자열을 반환
utf-8 cannot decode character XXX at position YY [...]
그래서 내가합니다 (*.desktop
파일을 구문 분석하는) 내 appfind
-module에서 오는 모든 값을 만들었다 고 말했다 jinja2.Template.render()
에 대한 호출에 UnicodeDecodeError
를 받았다.
이 곳의 문제는 지금까지 해결되었지만 어느 시점에 BaseHTTPServer.BaseHTTTPRequestHandler.wfile
슬롯에 함수에 의해 반환 된 문자열을 쓰고 있으며 어떤 인코딩을 사용 하던지이 오류를 수정할 수 없습니다.
이 시점에서 wfile
에 쓰여진 문자열은 af34가 유니 코드 개체를 반환하는 jinja2.Template.render()
에서옵니다.
기괴한 부분은 내 우분투 12.04 LTS에 있지만 내 친구의 우분투 11.04 LTS에 작동하는지입니다. 그러나 그 이유가 아닐 수도 있습니다. 그는 더 많은 응용 프로그램을 가지고 있으며 어쩌면 오류를 발생시키는 *.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(';')),
}
# ...
누군가가 나는 내가이 오류를 해결할 수있는 방법에 대해 계몽시겠습니까 :
그러나, 나는 제대로 *.desktop
파일의 인코딩을 검사? 내가 항상 unicode()
을 사용해야한다는 답변을 읽었지 만, 구현하기가 너무 힘들어서 wfile
에 글을 쓸 때 문제가 해결되지 않을 것이라고 생각하십니까?
감사합니다,
니클라스
'wfile'에 쓸 때 어떤 오류가 있습니까? – JAB