Я пытаюсь прочитать файл HTML, закодированный в EUC-KR, из URL. Когда я компилирую код внутри IDE, я получаю желаемый результат, но когда я собираю jar и пытаюсь запустить jar, прочитанные данные отображаются в виде вопросительных знаков («????» вместо корейских символов). Я предполагаю, что это связано с потерей кодировки.
Мета сайта говорит следующее:
<meta http-equiv="Content-Type" content="text/html; charset=euc-kr">
Вот мой код:
String line;
URL u = new URL("link to the site");
InputStream in = u.openConnection().getInputStream();
BufferedReader r = new BufferedReader(new InputStreamReader(in, "EUC-KR"));
while ((line = r.readLine()) != null) {
/*send the string to a text area*/--> This works fine now
/*take the string and pass it thru ByteArrayInputStream*/ --> this is where I believe the encoding is lost.
InputStream xin = new ByteArrayInputStream(thestring.getBytes("EUC-KR"));
Reader reader = new InputStreamReader(xin);
EditorKit kit = new HTMLEditorKit();
HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument();
kit.read(reader, doc, 0);
HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.STRONG);
while (it.isValid()) {
chaps.add(doc.getText(it.getStartOffset(), it.getEndOffset() - it.getStartOffset()).trim());
//chaps is a arraylist<string>
it.next();
}
Буду признателен, если кто-нибудь поможет мне понять, как захватывать символы без потери кодировки при запуске приложения на любой платформе, независимо от кодировки системы по умолчанию.
Спасибо
PS: программа при запуске в формате jar отображает системную кодировку Cp1252 и UTF-8 при запуске внутри IDE.