Python Django存储在非ascii字符上失败
我在静态文件夹中有一个名为Python Django存储在非ascii字符上失败,python,django,django-storage,Python,Django,Django Storage,我在静态文件夹中有一个名为foobar BarỏFoo.pdf的静态文件。 当我在浏览器中查看名为/static/Foo Bar BarỏFoo.pdf的文件时,它会呈现良好效果 但这里有一个场景,我需要查看该文件是否存在。 我正在使用django存储来检查该文件 path=u'Foo-Bar-BaröFoo.pdf' storage.exists(path) 它失败了 UnicodeEncodeError: 'ascii' codec can't encode character u'
foobar BarỏFoo.pdf
的静态文件。
当我在浏览器中查看名为/static/Foo Bar BarỏFoo.pdf
的文件时,它会呈现良好效果
但这里有一个场景,我需要查看该文件是否存在。
我正在使用django存储来检查该文件
path=u'Foo-Bar-BaröFoo.pdf'
storage.exists(path)
它失败了
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 40: ordinal not in range(128)
解决这个问题的办法是什么?也许是一些编码/解码
已经试过了
例外情况:
SuspiciousFileOperation: Suspicio...8f3f6)',)
必须在脚本顶部使用以下编码标识符,并且应以UTF-8格式保存文件:
# coding=utf-8
如果您使用的是Python 2.x,那么还必须使用u
前缀:
path = u'Foo-Bar-BaröFoo.pdf'
详细解释如下:
要定义源代码编码,必须有一个神奇的注释
可以作为第一个或第二个文件放置到源文件中
文件中的行,例如:
# coding=<encoding name>
#编码=
必须在脚本顶部使用以下编码标识符,并且应以UTF-8格式保存文件:
# coding=utf-8
如果您使用的是Python 2.x,那么还必须使用u
前缀:
path = u'Foo-Bar-BaröFoo.pdf'
详细解释如下:
要定义源代码编码,必须有一个神奇的注释
可以作为第一个或第二个文件放置到源文件中
文件中的行,例如:
# coding=<encoding name>
#编码=
默认情况下,当我从mongo获取路径时,调用
exists()
失败时,我会得到path=u'/static/Foo Bar\xf6Foo.pdf'
。不是路径中的\xf6
似乎\xf6
正在替换为文件名中的特殊字符/符号,如Bar\xfsfo
@NiviD是的,这是真的,它会错误为可疑文件操作
您能检查它何时何地被替换吗?默认情况下,当我从mongo获取路径时,调用exists()
失败时,我得到path=u'/static/Foo Bar\xf6Foo.pdf'
。不是路径中的\xf6
似乎\xf6
正在用文件名中的特殊字符/符号替换,如Bar\xfsfo
@NiviD是的,这是真的,它会出错为可疑文件操作
您能检查它何时何地被替换吗?