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

Base64编码值存入JSONObject后出现多余换行符问题排查

问题:Base64编码后存入JSONObject,值末尾多出\n换行符

我有一个字符串:

3e8c837f-907e-46dd-9f71-697ccbb065d6

用以下代码进行Base64编码:

Base64.encodeToString(this.toByteArray(Charsets.UTF_8), Base64.DEFAULT)

编码输出为:

M2U4YzgzN2YtOTA3ZS00NmRkLTlmNzEtNjk3Y2NiYjA2NWQ2

看起来一切正常,但将编码后的字符串存入JSONObject时:

val json = JSONObject()
json.put("id", encodedId)

最终发送的JSON中id值变成了:

"id":"M2U4YzgzN2YtOTA3ZS00NmRkLTlmNzEtNjk3Y2NiYjA2NWQ2\n"

末尾多了一个\n,请问这是什么原因导致的?


原因与解决方法

原因

你使用的Base64.DEFAULT编码参数遵循RFC 2045规范,会自动在编码后的字符串末尾添加换行符(\n),目的是限制每行最多76个字符。虽然你单独查看编码结果时可能看不到这个换行符,但它实际上已经存在于字符串中,当存入JSONObject并序列化后,这个隐藏的换行符就被显式展示出来了。

解决方法

将编码参数替换为Base64.NO_WRAP,这个参数会禁用自动添加换行符的行为,确保编码结果末尾不会出现多余的\n。

修改后的代码示例:

val originalId = "3e8c837f-907e-46dd-9f71-697ccbb065d6"
val encodedId = Base64.encodeToString(originalId.toByteArray(Charsets.UTF_8), Base64.NO_WRAP)

val json = JSONObject()
json.put("id", encodedId)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:45:45