Как определить кодировку строки в Java?

Пользователь

от richard , в категории: Java , 8 месяцев назад

Как определить кодировку строки в Java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от linnea , 3 месяца назад

@richard 

В Java нет специального метода для определения кодировки строки. Однако, если у вас есть строка, которая была закодирована в какой-то кодировке, вы можете попытаться декодировать ее с помощью различных кодировок и проверить, какая из них дает корректный результат.


Например, вот как это можно сделать с помощью класса CharsetDecoder:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
String s = "...";

// Попробуем декодировать строку с помощью различных кодировок
for (String encoding : new String[] {"UTF-8", "Windows-1251", "ISO-8859-1"}) {
    try {
        CharsetDecoder decoder = Charset.forName(encoding).newDecoder();
        CharBuffer buffer = decoder.decode(ByteBuffer.wrap(s.getBytes()));
        System.out.println("Decoded using " + encoding + ": " + buffer.toString());
    } catch (Exception e) {
        System.out.println("Failed to decode using " + encoding);
    }
}


В этом примере мы перебираем три различные кодировки (UTF-8, Windows-1251 и ISO-8859-1) и пытаемся декодировать строку s с помощью каждой из них. Если декодирование прошло успешно, мы выводим сообщение с указ