Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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
Java 服务器从Windows和linux上的数据库返回不同的响应_Java_Mysql_Linux_Character Encoding - Fatal编程技术网

Java 服务器从Windows和linux上的数据库返回不同的响应

Java 服务器从Windows和linux上的数据库返回不同的响应,java,mysql,linux,character-encoding,Java,Mysql,Linux,Character Encoding,我有一个数据库(MySql)托管在云上的Linux服务器上。和我的Java应用程序部署在同一台服务器上。我在数据库中有数据,我在html中显示这些数据 当我从LINUX服务器上托管的应用程序中点击API时,会得到垃圾字符 喜欢(|���59���6.���20������) 当我将intellij中的本地应用程序连接到同一个LINUX数据库时,我会从postman中的本地应用程序获得正确的响应(|毓59年6.月20日缸)。 我的回答实际上包含了日语字符 我试过什么 在浏览器中更改字符集 使用UT

我有一个数据库(MySql)托管在云上的Linux服务器上。和我的Java应用程序部署在同一台服务器上。我在数据库中有数据,我在html中显示这些数据

当我从LINUX服务器上托管的应用程序中点击API时,会得到垃圾字符 喜欢(
|���59���6.���20������

当我将intellij中的本地应用程序连接到同一个LINUX数据库时,我会从postman中的本地应用程序获得正确的响应(
|毓59年6.月20日缸)。
我的回答实际上包含了日语字符

我试过什么

  • 在浏览器中更改字符集
  • 使用UTF-8字符集对java中的字符串进行编码
  • 在这两种情况下,来自本地计算机的响应和LINUX响应头都是相同的。 只有响应主体不同。我不知道真正的问题是什么

    我的示例代码如下。我不能在这里发布实际代码

    @Autowired
        private EncryptionService encryptionService;
    
        @Autowired
        private IdentifierRepository identifierRepository;
    
        private ApplicantRepository applicantRepository;
    
        @GetMapping("applicant/{applicantId}/identifier/{identifierId}")
        public ResponseEntity<Identifier> getIdentifier(@PathVariable long applicantId,@PathVariable long identifierId){
            Identifier identifier = identifierRepository.findIdentifierById(identifierId);
            identifier.setOcrResponse(encryptionService.decrypt(identifier.setOcrResponse()));
            return ResponseEntity.ok(identifier);
        }
        @PostMapping("applicant/{applicantId}/identifier")
        public ResponseEntity<Identifier> callbackUrl(@RequestBody Map<String,String> map,@PathVariable long applicantId){
            Identifier identifier = new Identifier();
            identifier.setApplicant(applicantRepository.findById(applicantId));
            identifier.setOcrResponse(encryptionService.encrypt(map.get("abbyOcr")));
            identifierRepository.save(identifier);
            ResponseEntity.noContent();
        }
    
    这些是来自linux的响应头

    Access-Control-Allow-Origin: *
    Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    Content-Type: application/json;charset=UTF-8
    Date: Wed, 20 Nov 2019 11:52:24 GMT
    Expires: 0
    Pragma: no-cache
    Set-Cookie: JSESSIONID=174FB7AF3BC28922D3169DE1BB12612E; Path=/; HttpOnly
    Transfer-Encoding: chunked
    Vary: Origin
    Vary: Access-Control-Request-Method
    Vary: Access-Control-Request-Headers
    X-Content-Type-Options: nosniff
    X-Frame-Options: DENY
    X-XSS-Protection: 1; mode=block
    

    任何人请告诉我如何解决此问题

    您必须设置编码。

    尝试使用UTF-8编码技术进行响应。

    为什么要进行否决投票?您确定响应主体确实不同吗?或者它是如何显示的(由您的客户端/终端/应用程序)?实际上,邮递员和html中的显示方式不同。请显示相关代码并说明确切的问题或错误。仅仅描述是不够的。另请参见。@VikramSingh请求是否包含“接受字符集”标题?类似于:“接受字符集:utf-8,iso-8859-1;q=0.5”?不,它与客户机无关,因为我在《邮递员》中也得到了不同的响应。我必须同意这个建议。在通信通道上是否有其他组件可以使用不同的编码?可以是上下文、运行时或其他容器,即使它们位于同一进程中。不,这是对服务的直接调用。您可以尝试检查客户端中的内容吗?我的意思是,它可能试图用错误的编码来解码响应,这是在解码的某个地方。在运行时调试中,您应该能够看到它。当消息被重建时。从标题中,我看到您没有指定任何Accept字符集标题。您也可以尝试设置该选项。取决于你的客户是如何考虑这一点的。我的客户希望它做任何事情。但是我的代码没有进行任何解码。
    Access-Control-Allow-Origin: *
    Cache-Control: no-cache, no-store, max-age=0, must-revalidate
    Content-Type: application/json;charset=UTF-8
    Date: Wed, 20 Nov 2019 11:52:24 GMT
    Expires: 0
    Pragma: no-cache
    Set-Cookie: JSESSIONID=174FB7AF3BC28922D3169DE1BB12612E; Path=/; HttpOnly
    Transfer-Encoding: chunked
    Vary: Origin
    Vary: Access-Control-Request-Method
    Vary: Access-Control-Request-Headers
    X-Content-Type-Options: nosniff
    X-Frame-Options: DENY
    X-XSS-Protection: 1; mode=block