У меня проблема с кодировкой в Java, одна строка, которую мне действительно нужно обработать, - это ответ от запуска команды systeminfo в командной строке Windows, и мне нужно представить результат в HTML-документе.Проблема в том, что если я запускаю свое приложение на французской операционной системе, искаженные символы отображаются в html, независимо от того, как я пытался преобразовать настройки кодирования.
Из журнала я вижу, что кодировка системы«Cp1252», фрагмент кода выглядит следующим образом:
String systemEncoding = System.getProperty("sun.jnu.encoding");
log.info("sun.jnu.encoding="+systemEncoding);
В классе HTML Builder я сделал что-то вроде этого:
for(String line : lines){
line = new String(line.getBytes("Cp1252"), "UTF8");
osReport.append(line + "<br>");
}
К сожалению, я все еще вижу эти искаженные »вопросительные знаки"все вокруг, которые должны быть некоторыми французскими символами .. Заголовок html выглядит следующим образом: btw
<HEAD>
<META content="text/html; charset=UTF-8" http-equiv=Content-Type>
</HEAD>
Как получить строку ответа, посмотрите следующий фрагмент кода, пожалуйста ..
try{
String systemEncoding = System.getProperty("sun.jnu.encoding");
log.info("sun.jnu.encoding="+systemEncoding);
InputStreamReader isr;
if (StringUtil.isEmpty(systemEncoding)) {
isr = new InputStreamReader(is);
} else {
isr = new InputStreamReader(is, systemEncoding);
}
BufferedReader br = new BufferedReader(isr);
String line=null;
while ((line = br.readLine()) != null) {
res.append(line);
res.append(LINE_SEP);
}
} catch (IOException ioe) {
log.error("IOException occurred while printing the response",ioe);
}
Любая помощь?Большое спасибо!