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

Java中Base64编解码丢失JSON特殊字符问题求助

问题根源与解决方案

嘿,我一眼就瞅出问题所在了——你完全搞反了Base64的编解码顺序!

你的代码里第一步就对原始JSON字符串"{\"name\":\"ABC\"}"执行了Base64解码操作,但这个原始JSON本身根本不是Base64编码后的内容啊!Base64只认特定的64个字符(A-Z、a-z、0-9、+、/,还有填充用的=),像{、"这些字符不在Base64的有效字符范围内,解码时会被直接忽略,这就是为啥解码再编码后只剩nameABC的原因。

正确的编解码流程

  • 编码(JSON → Base64字符串):先把JSON字符串转成字节数组,再用Base64编码成字符串
  • 解码(Base64字符串 → JSON):把Base64字符串解码成字节数组,再转回JSON字符串

修正后的代码示例

// 原始JSON字符串
String originalJson = "{\"name\":\"ABC\"}";

// 编码步骤:JSON → Base64字符串
byte[] jsonBytes = originalJson.getBytes(StandardCharsets.UTF_8);
String base64Encoded = android.util.Base64.encodeToString(jsonBytes, Base64.NO_WRAP);

// 解码步骤:Base64字符串 → 原始JSON
byte[] decodedBytes = android.util.Base64.decode(base64Encoded, Base64.NO_WRAP);
String decodedJson = new String(decodedBytes, StandardCharsets.UTF_8);

// 输出验证
System.out.println("编码后的Base64字符串:" + base64Encoded);
System.out.println("解码后的原始JSON:" + decodedJson);

关键注意点

  • 一定要指定字符集(比如UTF_8),避免不同环境下的字符编码差异导致乱码
  • 严格遵循“先编码再解码”的顺序,别搞反啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:23:40