Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
 Аватар для Ermintar
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 39

SAX не читает русские буквы

21.06.2012, 16:18. Показов 3550. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть xml-файл с системой правил для разбора текста.
Такого вида:
XML
1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<rules>
<rule>
    <regexp>балкон</regexp>
    <params>
        <param>
             <type>BALCONY</type>
             <value>yes</value>
        </param>
    </params>
</rule>
</rules>
И функция вызова разбора этого документа

Java
1
2
3
4
5
6
7
8
9
10
11
    //загрузка
    public void load(String xmlName) throws SAXException, IOException, ParserConfigurationException
    {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        SAXParser parser = factory.newSAXParser();
 
        SAXHandler handler = new SAXHandler();
        parser.parse(new File(xmlName), handler);
 
        rules= handler.getRules();
    }
В общем, когда парсер доходит до русских букв возниает exeption Invalid byte 2 of 3-byte UTF-8 sequence.
Если заменить русские буквы на английские, то все проходит корректно (<regexp>balcon</regexp>)

Подскажите, как это исправить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.06.2012, 16:18
Ответы с готовыми решениями:

Приложение неправильно читает русские буквы
Друзья, помогите:) Программа одна написана на Java с использованием swing, awt итд, но не в этом суть. А суть в том что там есть...

StreamReader не читает русские буквы из файла .txt
Пишу метод, который читает значения из файла txt по значению. Особо в нете не прошарен, если есть способы проще и я пишу велосипед, то...

Заменить в исходном файле русские буквы ‘к’ на буквы ‘т’, буквы ‘т’ на буквы ‘к’, буквы ‘л’ на буквы ‘в’, буквы ‘в’ на
Задание: Заменить в исходном файле русские буквы ‘к’ на буквы ‘т’, буквы ‘т’ на буквы ‘к’, буквы ‘л’ на буквы ‘в’, буквы ‘в’ на буквы ‘л’.

3
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
21.06.2012, 18:15
С вероятностью 99.9% у Вас текст не в UTF-8, а в Windows-1251. В этой кодировке буква 'б' в старших 4-х битах имеет 1110, а в UTF-8 это признак трехбайтовой последовательности. Следующий байт при этом должен начинатся на 10, а у Вас там 'а', которая тоже начинается на 1110. Соответственно, перекодировщик и пишет - некорректный второй байт трехбайтовой последовательности.

Способов лечения два. Первый - поставить кодировку windows-1251 вместо UTF-8. Второй - перекодировать файл в UTF-8.
1
 Аватар для Ermintar
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 39
21.06.2012, 18:41  [ТС]
Огромное спасибо.
XML
1
<?xml version="1.0" encoding="windows-1251"?>
Вот так, работает.

А второй способ можно подробнее рассказать, как перекодировать. (вдруг придется использовать)
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
21.06.2012, 19:23
Можно использовать любой редактор, который умеет записывать в UTF-8 и windows-1251. Только не стандартный notepad, он UTF-8 пишет в извращенном виде. Можно взять, например, notepad++. Открыть файл, он сам определит кодировку, потом в меню Encoding выбрать "Convert to UTF-8 without BOM" и сохранить. Всё, кодировка будет UTF-8, только в заголовке ее потом надо будет правильно прописать.

P.S. Про кодировки можете тут почитать:
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.06.2012, 19:23
Помогаю со студенческими работами здесь

Немецкая ХР не читает русские кодировки?
Народ, помогите, никак не могу научить ХР читать некоторые русские кодировки. Где лежит корень зла? закинул 1370 русских шрифтов, поменял...

Не читает русские символы из файла
Привет! Не могу прочитать русские символы из файла. Обрывается чтение на первом русском символе, до него английские читает нормально. ...

Проводник не читает русские имена папок
Здравствуйте! В инете не нашел решения моей проблемы, все что нашел - перепробовал, однако не решилось, потому вынужден был обратиться к...

Как прочитать с экрана русские символы, читает кракозябры
Здравствуйте, пользуюсь RAD Studio XE 3(какую смогла найти с скачать бесплатно). Всегда проблема с русскими символами, но считывать с файла...

Расположить латинские буквы в начале строки, отсортированные по алфавиту, а русские буквы в конце
ПОЖАЛУЙСТА ПОМОГИТЕ блондинке:) раньше не было фортрана а перевелася на другой факультет и сразу такие задачи... дана текстовая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru