在Linux系统中,下载文件时文件名出现乱码通常是由于字符编码不一致导致的。Linux系统默认使用的字符编码可能与文件名实际编码不匹配,或者与浏览器传递的文件名编码不一致。
convmv
工具来转换文件名的编码。convmv
工具来转换文件名的编码。--remote-name
选项来保留原始文件名。--remote-name
选项来保留原始文件名。以下是一个简单的Python Flask示例,展示如何在服务器端正确设置文件名编码:
from flask import Flask, send_file
import urllib.parse
app = Flask(__name__)
@app.route('/download')
def download_file():
filename = "文件名.txt"
encoded_filename = urllib.parse.quote(filename)
return send_file(
'path/to/file.txt',
as_attachment=True,
attachment_filename=filename,
mimetype='application/octet-stream',
headers=[('Content-Disposition', f'attachment; filename*=UTF-8\'\'{encoded_filename}')]
)
if __name__ == '__main__':
app.run(debug=True)
通过以上方法,可以有效解决Linux系统下文件下载时文件名乱码的问题。
领取专属 10元无门槛券
手把手带您无忧上云