0

djangoファイルのアップロードの場合、/upload/でUnicodeEncodeErrorを受け取ります。詳細は「latin-1'コーデックは文字を所定の位置にエンコードできません」です。

PythonのデフォルトコーデックはASCIIだと思いましたか?latin-1をピックアップできる可能性のある場所はどこですか?私のpostgresはutf8を使用しています。

views.py:

        kind = Kind()
        kind.style = style
        kind.kind_file.save(request.FILES['file'].name,request.FILES['file'])
        kind.save()

models.py:

def get_upload_path(instance,filename):
    return u"tmp/%s" % filename

class Kind (models.Model):
    style = models.ForeignKey(Style)
    kind_file = models.FileField(upload_to=get_upload_path)

トレースバック:

Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view
  20.                 return view_func(request, *args, **kwargs)
File "/home/vagrant/django_projects/frogtype/frogtype/font/views.py" in upload_file
  56.                 kind.kind_file.save(request.FILES['file'].name,request.FILES['file'])
File "/usr/local/lib/python2.6/dist-packages/django/db/models/fields/files.py" in save
  86.         self.name = self.storage.save(name, content)
File "/usr/local/lib/python2.6/dist-packages/django/core/files/storage.py" in save
  44.         name = self.get_available_name(name)
File "/usr/local/lib/python2.6/dist-packages/django/core/files/storage.py" in get_available_name
  70.         while self.exists(name):
File "/usr/local/lib/python2.6/dist-packages/django/core/files/storage.py" in exists
  230.         return os.path.exists(self.path(name))
File "/usr/lib/python2.6/genericpath.py" in exists
  18.         st = os.stat(path)

Exception Type: UnicodeEncodeError at /upload/
Exception Value: 'latin-1' codec can't encode characters in position 87-88: ordinal not in range(256)
4

1 に答える 1

0

たぶんlatin-1はブラウザに来るのでしょうか?(djangoのデフォルトのエンコーディングとhttpヘッダーを確認してください)

于 2012-05-23T00:22:37.243 に答える