Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
执行UTF-8 Base64编码/解码Java后出现奇怪字符_Java_Spring_Spring Boot_Encoding_Utf 8 - Fatal编程技术网

执行UTF-8 Base64编码/解码Java后出现奇怪字符

执行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标记,因此解码将失败或导致意外输出 要解决此问题,请执行以下操作之一

我通过这个在线转换器UTF8运行了一些输入文本

我将输出放入API中,API对其进行解码并进行进一步处理

应用程式介面呼叫 当我记录这些信息时,我不断地得到一个奇怪的角色

输入 奇异输出
我正在使用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