2

エラーメッセージ:

Traceback:
File "/web/hvita_perlan/lib/python2.6/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/web/hvita_perlan/lib/python2.6/site-packages/django/contrib/admin/views/decorators.py" in _checklogin
  19.             return view_func(request, *args, **kwargs)
File "/web/hvita_perlan/lib/python2.6/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
  79.         response = view_func(request, *args, **kwargs)
File "/web/hvita_perlan/lib/python2.6/site-packages/filebrowser/views.py" in browse
  99.         fileobject = FileObject(os.path.join(file_dir, file))
File "/web/hvita_perlan/lib/python2.6/posixpath.py" in join
  70.             path += '/' + b

Exception Type: UnicodeDecodeError at /admin/filebrowser/browse/
Exception Value: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)

エンコード/デコードできなかった文字列は /1h����.j

ファイルの実際のファイル名は: 1hæð.jpg

いくつかの情報:

> locale
LANG=en_GB.UTF-8

-

> python manage.py shell
>>> import locale
>>> locale.getlocale()
('en_GB', 'UTF8')

>>> import os
>>> os.stat('../uploads/_promotional/1hæð_fb_thumb.jpg')
posix.stat_result(st_mode=33279, st_ino=788504L, st_dev=51713L, st_nlink=1, st_uid=0, st_gid=0, st_size=1629L, st_atime=1311176542, st_mtime=1311176542, st_ctime=1311177235)

ご覧のとおり、シェルではすべてが機能しますが、django filebrowser では機能しません。

4

4 に答える 4

1

ドキュメントを見ると、FileBrowser は ASCII のみをサポートしているようです。

例外には次のように書かれています:

Exception Value: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)

os.path.join(file_dir, file)は Unicode 文字列を取得しており、UTF-8 ではなく ASCII に暗黙的にエンコードされています。この問題を解決するために、Python 3 で unicode / string の変更が行われました。

どこかで、file_dirでエンコードする必要がありますfile_dir.encode('utf-8')/web/hvita_perlan/lib/python2.6/site-packages/filebrowser/views.pyそれを機能させるための悪いハックとして、 99行目で試してみることができます:

fileobject = FileObject(os.path.join(file_dir.encode('utf-8'), file))

そして、このエラーをトリガーする FileBrowser の新しい場所を見つけるたびに、テストして繰り返します。

于 2011-07-20T17:56:05.940 に答える
0

その古い投稿ですが、問題は残っています。
私はdjango、apache2、django-filebrowserを使用していますが、この例外値を取得しています: 'ascii' codec can't decode byte 0xc3 in position...

mod_wsgiを使用してもうまくいったこと。

#https://docs.djangoproject.com/en/1.2/howto/deployment/modpython/#if-you-get-a-unicodeencodeerror
#Put this in your apache2/envvars file.

export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'

それが誰かを助けることを願っています。

于 2014-03-22T18:13:39.993 に答える
0

解決策はここにあります: http://diveintopython.net/xml_processing/unicode.html

lib/python2.6/ に sitecustomize.py を追加して問題を解決しました

# sitecustomize.py                   
# this file can be anywhere in your Python path,
# but it usually goes in ${pythondir}/lib/site-packages/
import sys
sys.setdefaultencoding('utf-8')

ファイル ブラウザー ファイルには、utf-8 ヘッダーがありません。彼らはこれを変えるべきだと思います。次のようになります。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
于 2011-07-21T17:24:17.283 に答える