|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.08.2018, 08:21 | #1 |
Регистрация: 08.02.2011
Сообщений: 3
|
Как организовать поиск строки в тексте с учетом кодировки?
Уважаемые специалисты - может Вы что то подскажете? Проблема в следующем:
Работаю в бесплатно аналоге Delphi и Lazarus - CodeTyphon64 (для 32-бит есть CodeTyphon32). Встала проблема поиска (парсинг) в большом XML файле (кодировка UTF-8 без ВОМ). В окне Мемо русские символы его не отображаются (кракозябры). Для отображения его в Мемо сконвертировал его в UTF-8. Отображение русских символов пошло нормально. Попытался организовать поиск с помощью стандартного компонента FindDialog. Итог - дает не верные результаты. Пробовал самодельные (pos(искомая подстрока, строка текста) + найденные в сети) варианты поиска. В итоге классический метод + найденные методы, применяемые для поиска не работают. Понял, что поиск идет не посимвольно - как это вроде бы должно быть, а ПО БАЙТАМ составляющих текст символов. И вот тут то и начинаются все проблемы. Символы в разных кодировках и даже внутри одной кодировки могут кодироваться разным числом байтов. В итоге побайтовый поиск не работает - особенно если в тексте одновременно присутствуют символы русского и английского языков. Или я чего то не понимаю??? Главная непонятка для меня в том - как можно разделить символы друг от друга используя их байты или байтовые (битовые слова)? По идее байтовое представление каждого символа в любой нормальной кодировке, независимо от самой кодировки и числа байтов в символе, должно начинаться с какой то метки, которая позволит понять, что мы имеем дело с новыми символом в тексте. Таким образом мы сможем разделить текст на символы и создать массив символов текста с которым потом можно работать. Вопрос у том - есть ли такие метки для символов у кодировок и какие они? Пока я не нашел четкого и ясного ответа на этот простой вопрос. Может ли кто нибудь ответить мне на него? Возможно есть уже готовые библиотеки, которые это делают, но я их не нашел? Что же делать? Как организовать поиск? Тем более, что в стандартных текстовых редакторах типа notebook - обычный блокнот это делается без проблем. Может тогда просто программно загружать искомый файл в блокнот и там программно вести поиск? Но нужна хорошая документация по программному управлению блокнотом из своего приложения. В сети нашел лишь простенькие примеры программного управления блокнотом из приложения. Может кто что то подскажет? Думаю это тема очень важная для всех. Возможно конечно, что я чего то не знаю. Не судите строго. Посоветуйте что делать - если у кого то есть идеи. С уважением Александр |
18.08.2018, 08:39 | #2 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
позволю себе процитировать свой пост на форуме:
а ещё, очень полезное чтиво: Абсолютный Минимум, который Каждый Разработчик Программного Обеспечения Обязательно Должен Знать о Unicode и Наборах Символов цитирую оттуда: Цитата:
Цитата:
это должно работать. Только в том случае, если и искомая строка и строка текста В ОДНОЙ И ТОЙ кодировке. покажите пример вашего кода. В особо тяжёлом случае можно сделать небольшой тестовый проект, приложить к нему небольшой XML файлик, запаковать исходники в проект и выложить проект сюда, на форум. Последний раз редактировалось Serge_Bliznykov; 18.08.2018 в 08:43. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поиск и замена заданной строки в тексте | Taner | Общие вопросы Delphi | 9 | 14.06.2014 10:45 |
как организовать поиск в БД | bsambo2013 | Фриланс | 1 | 27.11.2013 23:32 |
Поиск слов в тексте(Строки в Паскале) | ParkDI | Помощь студентам | 0 | 28.11.2010 18:03 |
Поиск строки в тексте по маске | Gerzs | Общие вопросы Delphi | 3 | 24.03.2010 09:36 |
Организовать поиск всех вхождений заданного слова в загруженном тексте | s2dentishe | Помощь студентам | 0 | 21.11.2009 18:53 |