乱码问题主因是UTF-8编码未正确声明或处理:一、请求头需设Accept-Charset: utf-8和Content-Type: application/json; charset=utf-8;二、请求体字符串须为合法UTF-8;三、客户端需强制响应按UTF-8解码;四、排查代理中间件篡改编码。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

如果您使用 DeepSeek API 获取响应时,返回内容中出现乱码字符(如 、□ 或其他异常符号),则很可能是请求或响应的字符编码未正确声明为 UTF-8。以下是解决此问题的步骤:
一、检查并设置请求头中的 Accept-Charset 和 Content-Type
客户端发起请求时,需明确告知服务器期望接收和发送的字符集为 UTF-8,避免服务端默认使用其他编码(如 ISO-8859-1)导致解析错误。
1、在 HTTP 请求头中添加 Accept-Charset: utf-8 字段。
2、若请求体含 JSON 数据,确保 Content-Type: application/json; charset=utf-8 被完整设置,而非仅 application/json。
3、使用 curl 时,可显式指定: curl -H "Content-Type: application/json; charset=utf-8" -H "Accept-Charset: utf-8" ...
二、验证请求体字符串本身是否为合法 UTF-8 编码
即使请求头正确,若原始 JSON 字符串内部含有非 UTF-8 字节序列(例如由 GBK 编码误存的中文字符串),DeepSeek 服务仍可能原样返回损坏字节,引发客户端解码失败。
1、在构造请求体前,对所有字符串字段执行 UTF-8 编码校验,丢弃或修复非法字节序列。
2、Python 中可使用 s.encode('utf-8').decode('utf-8') 触发 UnicodeDecodeError 检测非法字符。
3、Node.js 中可用 Buffer.from(str, 'utf8').toString('utf8') === str 进行一致性验证。
三、强制客户端响应解析为 UTF-8
部分 HTTP 客户端库会依据响应头中的 Content-Type 字段自动选择解码方式;若响应头缺失 charset 声明或声明错误,需手动覆盖解码逻辑。
1、在 Python requests 库中,获取响应后立即设置 response.encoding = 'utf-8',再调用 response.text。
2、在 JavaScript Fetch API 中,不依赖 response.text(),改用 response.arrayBuffer() 获取原始字节,再通过 new TextDecoder('utf-8').decode(buffer) 解码。
3、Postman 用户应在 Tests 标签页中加入脚本:pm.response.text().replace(/[\u0000-\u001f\u007f-\u009f]/g, '') 过滤控制字符辅助排查。
四、检查代理或网关中间件是否篡改编码声明
若请求经过 Nginx、Cloudflare 或企业防火墙等中间层,其可能重写 Content-Type 头部、剥离 charset 参数,或对响应体进行非 UTF-8 兼容的转换(如 gzip 后二次编码)。
1、使用 curl -v 查看原始响应头,确认 Content-Type 是否包含 charset=utf-8。
2、Nginx 配置中检查是否存在 charset off; 或 add_header Content-Type "application/json"; 类覆盖行为。
3、临时绕过代理直连 DeepSeek API 地址,比对响应差异以定位篡改节点。











