执行UTF-8 Base64编码/解码Java后出现奇怪字符
我通过这个在线转换器UTF8运行了一些输入文本 我将输出放入API中,API对其进行解码并进行进一步处理 应用程式介面呼叫 当我记录这些信息时,我不断地得到一个奇怪的角色 输入 奇异输出执行UTF-8 Base64编码/解码Java后出现奇怪字符,java,spring,spring-boot,encoding,utf-8,Java,Spring,Spring Boot,Encoding,Utf 8,我通过这个在线转换器UTF8运行了一些输入文本 我将输出放入API中,API对其进行解码并进行进一步处理 应用程式介面呼叫 当我记录这些信息时,我不断地得到一个奇怪的角色 输入 奇异输出 我正在使用Java Spring Boot运行我的API,所以想知道我通过Postman传递这个消息是否为我的调用增加了一些额外的味道。您正在将整个请求正文传递给base64解码器。由于请求正文不仅包含base64编码的字符串,还包含JSON标记,因此解码将失败或导致意外输出 要解决此问题,请执行以下操作之一
我正在使用Java Spring Boot运行我的API,所以想知道我通过Postman传递这个消息是否为我的调用增加了一些额外的味道。您正在将整个请求正文传递给base64解码器。由于请求正文不仅包含base64编码的字符串,还包含JSON标记,因此解码将失败或导致意外输出 要解决此问题,请执行以下操作之一:
- 确保您的请求正文中只有base64内容;或
- 解析请求正文中的JSON并提取要解码的base64字符串;或
- 创建一个对应于JSON结构的bean,并让Spring自动将请求主体映射到该bean
新字符串(字节[])
,始终使用双参数版本,其中指定字符集作为第二个参数:新字符串(已解码,StandardCharsets.utf8)
mime解码器感觉也是一个奇怪的选择。您是否尝试过使用Base64.getDecoder()
?@ErwinBolwidt已更新。另外,我尝试了getDecoder,没有任何更改。请稍候。你正在通过解码器运行整个JSON片段?还是仅仅是base64字符串?
@RequestMapping(value = "/highlight", method = RequestMethod.POST)
@ResponseBody
public String highlightTester(@RequestBody String programInput) throws UnsupportedEncodingException {
byte[] decoded = Base64.getMimeDecoder().decode(programInput);
String result = new String(decoded, StandardCharsets.UTF_8);
{
"code": "ICAgICAgICAvLyBTaW1wbGUgdXNlIFB5Z21lbnRzIGFzIHlvdSB3b3VsZCBpbiBQeXRob24NCiAgICAgICAgaW50ZXJwcmV0ZXIuZXhlYygiZnJvbSBweWdtZW50cyBpbXBvcnQgaGlnaGxpZ2h0XG4iDQogICAgICAgICAgICAgICAgKyAiZnJvbSBweWdtZW50cy5sZXhlcnMgaW1wb3J0IFB5dGhvbkxleGVyXG4iDQogICAgICAgICAgICAgICAgKyAiZnJvbSBweWdtZW50cy5mb3JtYXR0ZXJzIGltcG9ydCBIdG1sRm9ybWF0dGVyXG4iDQogICAgICAgICAgICAgICAgKyAiZm9ybWF0dGVyID0gSHRtbEZvcm1hdHRlcihzdHlsZT0nbW9ub2thaScsIg0KICAgICAgICAgICAgICAgICsgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm9zPUZhbHNlLCINCiAgICAgICAgICAgICAgICArICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9jbGFzc2VzPVRydWUsIg0KICAgICAgICAgICAgICAgICsgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjc3NjbGFzcz0nJywiDQogICAgICAgICAgICAgICAgKyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXN0eWxlcz0nbWFyZ2luOiAwJykiDQogICAgICAgICAgICAgICAgKyAiXG5yZXN1bHQgPSBoaWdobGlnaHQoY29kZSwgUHl0aG9uTGV4ZXIoKSwgZm9ybWF0dGVyKSIpOw0KDQogICAgICAgIC8vIEdldCB0aGUgcmVzdWx0IHRoYXQgaGFzIGJlZW4gc2V0IGluIGEgdmFyaWFibGUNCiAgICAgICAgbG9nLmluZm8oaW50ZXJwcmV0ZXIuZ2V0KCJyZXN1bHQiLCBTdHJpbmcuY2xhc3MpKTsNCiAgICAgICAgcmV0dXJuIGludGVycHJldGVyLmdldCgicmVzdWx0IiwgU3RyaW5nLmNsYXNzKTs="
}
....#1e0010">�</span><span style="color: #f92672">^</span>....
r�^wefwefwef