gpt4 book ai didi

unicode - Flask-使用werkzeug处理unicode文本?

转载 作者:行者123 更新时间:2023-12-03 15:29:24 24 4
gpt4 key购买 nike

因此,我试图让浏览器下载具有特定名称的文件,该文件存储在数据库中。为避免文件名冲突,该文件使用GUID保存在磁盘上,当需要实际下载文件时,将为浏览器提供数据库中的文件名。该名称是用日语写的,当我在页面上显示该名称时,它很好用,因此可以将其存储在数据库中。当我尝试让浏览器实际使用该名称下载时:

return send_from_directory(app.config['FILE_FOLDER'], name_on_disk, 
as_attachment=True, attachment_filename = filename)

Flask抛出错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 15-20: 
ordinal not in range(128)

该错误似乎并非源于我的代码,而是源于Werkzeug的一部分:
/werkzeug/http.py", line 150, in quote_header_value
value = str(value)

为什么会这样呢?根据他们的文档,Flask是“100%Unicode”

在重写代码之前,我确实遇到了这个问题,并通过修改Werkzeug中的许多实际操作来解决了这个问题,但是我真的不想为已部署的应用程序执行此操作,因为这是一个痛苦且不明智的做法。
Python 2.7.6 (default, Nov 26 2013, 12:52:49) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

filename = "[얼티메이트] [131225] TVアニメ「キルラキル」オリジナルサウンドトラック (FLAC).zip"

print repr(filename)



'[\xec\x96\xbc\xed\x8b\xb0\xeb\xa9\x94\xec\x9d\xb4\xed\x8a\xb8] [131225] TV\xe3\x82\xa2\xe3\x83\x8b\xe3\x83\xa1\xe3\x80\x8c\xe3\x82\xad\xe3\x83\xab\xe3\x83\xa9\xe3\x82\xad\xe3\x83\xab\xe3\x80\x8d\xe3\x82\xaa\xe3\x83\xaa\xe3\x82\xb8\xe3\x83\x8a\xe3\x83\xab\xe3\x82\xb5\xe3\x82\xa6\xe3\x83\xb3\xe3\x83\x89\xe3\x83\x88\xe3\x83\xa9\xe3\x83\x83\xe3\x82\xaf (FLAC).zip'
>>>

最佳答案

处理非ASCII数据时,应明确传递unicode字符串(类型unicode)。通常在Flask中,字节串被假定为具有ascii编码。

关于unicode - Flask-使用werkzeug处理unicode文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com