Ich habe ein Problem mit HTTP-Headern, sie sind in ASCII codiert und ich möchte eine Ansicht zum Herunterladen von Dateien zur Verfügung gestellt, die Namen nicht ASCII sein können.Wie UTF8 Dateinamen für HTTP-Header zu kodieren? (Python, Django)
response['Content-Disposition'] = 'attachment; filename="%s"' % (vo.filename.encode("ASCII","replace"),)
Ich will nicht statische Dateien für gleiches Problem mit nicht ASCII-Dateinamen, aber in diesem Fall dienen dort verwenden, um ein Problem mit Dateisystem wäre und es ist Dateinamen-Codierung. (Ich weiß nicht Ziel OS.)
Ich habe bereits versucht urllib.quote(), aber es löst KeyError Ausnahme.
Möglicherweise mache ich etwas falsch, aber vielleicht ist es unmöglich.
Ich weiß, dass ich Jahre zu spät bin, aber ... die KeyError-Ausnahme nervt mich wirklich. Ich meine nicht nur "ab und zu stoße ich auf dieses Problem", ich meine, ich habe Python vor einigen Jahren einen Patch zur Verfügung gestellt, der eine Zeitlang argumentierte, dann entschied ich, dass sie Python 2 nicht ändern wollten habe dieses Problem in Python 3 behoben, aber sie haben meinen Patch in Python 2 nie akzeptiert. Der Workaround ist zuerst .encode ('utf-8') und dann urllib.quote. Aber das ist für die URL-Codierung, die nicht die Standardmethode ist, diese in Header zu setzen. – mgiuca