При считывании с сайта вакансий и потом записи в html файл, символы в файле в кириллице выглядят кракозябрами. Кодировка в ниже методе, как и самом файле "<meta charset="utf-8"> " стоит. Без понятия как исправить!
protected Document getDocument() throws IOException {
Document htmlFile = null;
try {
htmlFile = Jsoup.parse(new File(filePath), "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
return htmlFile;
}
И. Ж.
41 уровень
Проблема с кириллицей при записи в html файл
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Samvel
16 февраля 2024, 05:19
трей кеч зачем если все одно в сигнатуре метода указываешь throus, да и документ null тоже по ходу излишне, сразу ретурн Jsoup.parse(....). Так то все ровно, остальное это уже в настройках самой idea....
0
И. Ж.
16 февраля 2024, 13:32
То уже под валидатор подстраивался, в дальнейшем подправлю программу.. Хочу дополнить функционал к этому всему, но с этим косяком пока хз, настройками кодировки в идее пытался поиграться, пока не вышло
0
Стас ПасинковSoftware Developer в ZipyMaster
16 февраля 2024, 01:42
як ви пишете у файл?
може на самому сайті з вакансіями кодування не утф-8?
0
И. Ж.
16 февраля 2024, 13:49
Из сайта изымаю:
String url = "https://javarush.com/testdata/big28data2.html";
doc = Jsoup.connect(url).
userAgent("Chrome/121.0.0.0 Safari/537.36").referrer("").get();
Затем изымаю все необходимые данные с документа (название, город, и т д), записываю в обьект Vacance, значения стринговые все. Тут нормально, в консоль выводит кириллицу где есть, нормально. А потом при записи в html файл, там то и кракозябры. Запись обычным способом:
private void updateFile(String str) {
Path pathToHtmlFile = Paths.get(filePath).toAbsolutePath();
try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)))) {
writer.write(str);
} catch (IOException e) {
e.printStackTrace();
}
}
Где записываю строку str (список вакансий с данными) в виде html уже. Получается что изымаю с сайта, еще все нормально отображает, но в файле уже кириллица не видна.
0
Денис Enterprise Java Developer
16 февраля 2024, 15:39
Т.е. при дебаге, строчные значения у тебя в переменных отображаются нормально, но пишутся не верно?
Попробуй руками задать кодировку для файла вывода. Убедись что открываешь файл в нужной кодировке, если пользуешься виндой она все норовит или сохранить или открыть в своей убогой CP-1251
+1
И. Ж.
16 февраля 2024, 18:58решение
Да, в дебаге корректно было. Исправилось в итоге невероятным способом, в файле поставил так <meta charset="windows-1251"> и отображается правильно. UTF-8 стало быть не нравилось
+2
Денис Enterprise Java Developer
16 февраля 2024, 19:02
Все проще гораздо, Java записала файл в дефолтной кодировке системы, для русский виндоусов раньше была CP-1251 (еще с ХР если правильно помню, хз что там в 11й).
Тут вариантов несколько - правильный, руками задавать кодировку вывода. Ну или юзать систему которая умеет в человеческие кодировки - макось или лялих.
+2