2

sudsメソッドで Zipfile コンテンツを送信しようとすると、次のエラーが発生します。

'ascii' codec can't decode byte 0x8c in position 10: ordinal not in range(128)

これが私のコードです:

try:
    project_archive = open(os.path.join(settings.MEDIA_ROOT, 'zip/project.zip'), "rb")
    data = project_archive.read()
    client = Client(settings.UPLOAD_PROJECT_WS_URL)
    client.service.uploadProject(data)
except Exception as e:
    return HttpResponse(e)
else:
    return HttpResponse("Project was exported")
4

3 に答える 3

1

suds は、soap ファイルの添付をサポートしていません (最後に確認したときではありませんが、しばらく経っています)。

ここで回避してください: https://fedorahosted.org/suds/attachment/ticket/350/soap_attachments.2.py

または別のライブラリを使用する

于 2013-05-27T06:50:49.587 に答える
0

問題は、ascii コーデックを使用して Unicode 形式のファイルを読み込もうとしているだけのようです。Unicode に関する公式ドキュメントについては、http://docs.python.org/2/howto/unicode.htmlを参照してください。同様の議論のために、Python でのファイルへの Unicode (UTF-8) の読み取りと書き込みも参照できます。

あなたの問題を簡単に言えば、次のコードが機能するはずです:

import codecs
project_archive = codecs.open(os.path.join(settings.MEDIA_ROOT, 'zip/project.zip'), 
                              "rb", "utf-8")
data = project_archive.read()

上記のソリューションでは、使用される Unicode エンコーディングがutf-8. 他のコーデック (たとえばISO-8859-1) が使用されている場合は、utf-8.

于 2013-05-27T07:04:47.127 に答える