You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel文件解码异常:REST API上传.xls文件Base64转码出现乱码

根因说明

你犯的核心错误是把二进制文件字节数组强行做了UTF-8文本转码。Base64解码后的结果本身就是Excel文件的原始二进制字节,根本不是UTF-8编码的文本,两次转码(字节→UTF-8字符串→字节)会把无法识别为UTF-8字符的二进制位直接替换为乱码占位符,彻底破坏原始文件数据。你输出的乱码开头的PK!是ZIP压缩包的文件头标识,也能验证解码后的数据本来就是二进制压缩包(.xlsx格式本质就是ZIP打包的XML文件集合)。


修复方案

直接用Base64解码得到的字节数组构造输入流即可,不需要多余的转码操作:

byte[] excelRawBytes = Base64.getDecoder().decode(fileContentEncoded);
InputStream fileContent = new ByteArrayInputStream(excelRawBytes);

后续如果需要解析Excel内容,直接把这个输入流传给POI等Excel处理工具就行:

// 读取xlsx文件示例
XSSFWorkbook workbook = new XSSFWorkbook(fileContent);
// 读取旧版.xls文件可以换用HSSFWorkbook

额外排查注意项

  • 确认你拆分请求内容拿Base64串的逻辑没有问题,不要把分隔符、请求头字段等多余内容带到fileContentEncoded里,否则会导致Base64解码失败。
  • 确认上传端的Base64编码逻辑是直接读取文件二进制字节做的编码,没有额外做字符转码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:54:03