Mam bazę danych (MySql) hostowaną na serwerze Linux w chmurze. A moja aplikacja Java została wdrożona na tym samym serwerze. Mam dane w bazie danych, które wyświetlam w moim html.
Kiedy trafiam do API z aplikacji hostowanej na serwerze LINUX, otrzymuję niepotrzebne znaki jak (|���59���6���20������
) w treści odpowiedzi.
A kiedy podłączam lokalną aplikację w intellij do tej samej bazy danych LINUX, otrzymuję właściwą odpowiedź z mojej aplikacji lokalnej w listonoszu (|毓59年6月20日缸
). Moja odpowiedź faktycznie zawiera japoński charakter.
Co próbowałem?
- Zmień zestaw znaków w przeglądarce.
- Zakoduj ciąg znaków w java przy użyciu zestawu znaków UTF-8.
Zarówno odpowiedź z komputera lokalnego, jak i nagłówki odpowiedzi LINUX są takie same. Różni się tylko treść odpowiedzi. Nie mam pojęcia, jaki jest rzeczywisty problem.
Mój przykładowy kod znajduje się poniżej. Nie mogę tutaj zamieścić aktualnego kodu.
@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();
}
Właściwie otrzymujemy odpowiedź jako callback od abby ocr i zapisujemy ją do bazy danych po zaszyfrowaniu.
To są nagłówki żądań.
Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9,hi;q=0.8
accessToken: 272f8807-f6c9-4bc4-9ba4-8082532e9364
Cache-Control: no-cache
Connection: keep-alive
Host: 10.132.214.204:8191
Origin: http://10.132.214.204:8080
Pragma: no-cache
Referer: http://10.132.214.204:8080/dob/
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
A to są nagłówki odpowiedzi z linuxa
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
Niech ktoś mi podpowie, jak rozwiązać ten problem
1 odpowiedź
Musisz ustawić kodowanie.
Spróbuj użyć techniki kodowania UTF-8, aby uzyskać odpowiedź.
Podobne pytania
Powiązane pytania
Nowe pytania
java
Java to język programowania wysokiego poziomu. Użyj tego tagu, jeśli masz problemy z używaniem lub zrozumieniem samego języka. Ten tag jest rzadko używany samodzielnie i jest najczęściej używany w połączeniu z [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] i [maven].