在Python 3中保存带日文字符的文件?

时间:2014-01-21 23:50:01

标签: python unicode

我正在尝试创建一个将文件上传到文件夹的python脚本。一切都工作正常,除了我尝试保存一个日文文本名称的文件,它被切断了。它像somefile__.zip一样,下划线是日文文本的位置。在文件的顶部我设置编码:utf-8但这没有任何影响。这是安全文件名功能的问题还是我错过了什么?我的文件管理器可以在名称中显示带有日文字符的文件,所以这不是问题。

def upload_file():
if request.method == 'POST': 
    file = request.files['file']
    if file and allowed_file(file.filename):
        filename = secure_filename(file.filename)
        if is_image(file.filename):
            filename = shortuuid.uuid()[:7] + "." + file.filename.rsplit(".", 1)[1]
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
        else:
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))

1 个答案:

答案 0 :(得分:2)

如果没有更多信息,我无法确定这是对的,我会将此作为评论,但我还没有足够的代表。

我认为你的问题是secure_filename功能。我真的意识到这是一个Django问题。我搜索了secure_filename,发现它来自Werkzeug。在documentation中,它表示secure_filename函数返回仅ASCII字符串。这可能是你的问题。

如果删除该功能,则可以检查它是否有效。

如果您确实需要使文件名安全,则可能需要编写自己的代码才能执行此操作或查找其他要使用的库。

也可能是该函数返回一个空文件名,因此您可以使用它,但是您有责任检查并处理它。