You need to enable JavaScript to run this app. Python如何将bytes对象转为无b前缀的字符串用于Content-Disposition请求头
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将bytes对象转为无b前缀的字符串用于Content-Disposition请求头

Python UTF-8字节串转换及HTTP下载文件名处理方案

1. 字面量转换实现(匹配你要求的输出格式)

直接处理bytes对象的repr输出,快速得到你需要的格式:

# 输入处理
origin_str = 'hello 📌'
utf8_bytes = origin_str.encode('utf-8')
# 转换逻辑:去掉bytes repr的b前缀和单引号包裹,再套双引号
target_str = f'"{repr(utf8_bytes)[2:-1]}"'
# 输出结果:"hello \xf0\x9f\x93\x8c"
print(target_str)

2. Content-Disposition头场景更推荐的标准实现

你要把转换结果用于下载文件名的请求头,不需要手动做字节转义,直接按照RFC 5987规范生成兼容所有主流浏览器的头参数即可,避免乱码问题:

from urllib.parse import quote

file_name = 'hello 📌'
# 对文件名做URL编码,指定UTF-8
encoded_name = quote(file_name, encoding='utf-8')
# 拼接符合规范的Content-Disposition值
content_disposition = f"attachment; filename*=UTF-8''{encoded_name}"

# 响应头赋值示例(以FastAPI/Flask等框架为例)
# response.headers["Content-Disposition"] = content_disposition

该方案兼容Chrome、Firefox、Safari、Edge所有主流浏览器,不需要手动处理字节转义,不会出现特殊字符、emoji乱码的问题。

内容的提问来源于stack exchange,提问作者davi1ta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 03:36:04