Я пытаюсь получить оригинальную строку, закодированную в неизвестном формате.Я не знаю, какую кодировку он использует в устаревшем приложении.
Например, пользователь вводит Special[Home]^
в устаревшей системе, он сохраняет "Special¢Home!¬
" в базе данных DB2.
Он правильно работает в устаревшей системе, где он кодирует и декодирует в нужном формате как Special[Home]^
.
Когда я пытаюсь прочитать те же данные Special[Home]^
из приложения Java, он читается как Special¢Home!¬
Я также пытался найти правильную кодировку, используя код, показанный ниже, но не работает.Любая помощь будет оценена.
@Test
public void charsetTest() {
String encodedString = "Special¢Home!¬";
String originalString = "Special[Home]^";
Map<String, Charset> availableCharsets = Charset.availableCharsets();
Set<String> keySet = availableCharsets.keySet();
for (String key : keySet) {
Charset charset = availableCharsets.get(key);
try {
String decodedString = new String(charset.encode(encodedString).array(), charset);
System.out.println(decodedString + ": " + charset);
if (originalString.equals(decodedString)) {
System.out.println("match found: -> " + originalString + ": " + charset);
}
} catch (UnsupportedOperationException e) {
/* e.printStackTrace(); */
}
}
}