首页 文章

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

提问于
浏览
0

我正在尝试制作一个将文件上传到文件夹的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 回答

  • 2

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

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

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

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

    它也可能是函数返回一个空文件名,所以你可以使用它,但你有责任检查并处理它 .

相关问题