![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
_Y_ |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Пытаюсь обработать кирилицу, поступающую в формате UTF-8
Запускаю программу из Intellij idea - всё работает. Компилирю и запускаю JAR - кирилицу программа на понимает. Сделал вот такой простенький тест-код:
Файл java_UTF-8_test.txt содержит единственную строку
Intellij idea выдаёт ожидаемое:
Компилирую в JAR и запускаю:
Что-то я делаю не так. Подскажете решение? Это сообщение отредактировал(а) _Y_ - 26.12.2021, 13:52 -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||||||
|
|||||||||
SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
попробуйте в винде для запуска вписывать это:
java -Dfile.encoding="utf-8" -jar у винды кодировка cp1251, - как вариант можно узнать кодировку в системе а затем все стрины конвертировать ... (так будет правильней) Это сообщение отредактировал(а) SVN74 - 26.12.2021, 23:01 |
|||
|
||||
Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 4 Всего: 10 |
Передавать параметр при запуске можно, конечно, но если мы ожидаем всегда читать UTF-8, то лучше прям в коде это и указать:
-------------------- |
|||
|
||||
SVN74 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 1 Всего: 18 |
Все равно будут каракули... Проблема именно в выводе. Хотя если вместо utf8 загрузить виндоусовский формат текстового файла без конвертации в utf8, то должно сработать. но это не наш метод, ![]() |
|||
|
||||
Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 4 Всего: 10 |
Не понимаю почему ты так решил. System.out.println() выводит в системной кодировке, а это именно та кодировка которую ожидает cmd. Так что вывод как раз должен быть верным при условии что считано было верно. Ну разве что кодировка вывода совсем не поддерживает кириллицу типа US-ASCII.
Это сообщение отредактировал(а) Старовъръ - 27.12.2021, 00:39 -------------------- |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Спасибо за ответы, вечером поэкспериментирую с вашими решениями. Сейчас - толко то, что можно сказать быстро.
............. ЗЫ: Общая задача такая. Написал простенький парсер веб-страницы. Парсер заходит на сайт, позволяющий найти синонимы к русскому слову. Синонимов, понятное дело, несколько, каждый - кликабельный, к нему тоже можно посмотреть синонимы. Проблема в том, что кликая по цепочке синонимов вручную неизбежно входишь в цикл. Вот я и написал простенькоий код, который показывает только те варианты, которые встретились впервые. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
_Y_ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Спасибо, так работает. Тоже работает. И этот вариант предпочтительнее, поскольку позволяет работать с разными кодировками. Распространил решение на свою задачу - чтение из сети:
Работает. Спасибо большое ![]() ЗЫ:Мне немного стыдно приходить с простоватыми вопросами. Но на Java профессионально писал лет пятнадцать назад, забыл всё. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
||||
|
|||||
Старовъръ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 491 Регистрация: 8.5.2008 Репутация: 4 Всего: 10 |
Из URLConnection можно получить HTTP Header'ы. Если веб ресурс сделан толково, то в ответе будет Content-Type, в котором так же может присутствовать charset. Этот charset как раз и будет содержать кодировку. Это чтоб не затачиваться именно на UTF-8, а то вдруг на каком-то ресурсе будет одна кодировка, а на другом - другая. Ну а если она не присутствует, тогда уже использовать какое-то умолчание типа UTF-8.
-------------------- |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Старовъръ, понятно. Хорошо бы запомнить. Но в этом проекте вряд ли пригодится. Ведь для каждого ресурса парсер пишется вручную, так что определять кодировку всё равно приходится до написания класса-парсера.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |