Название: [Решено] QRegExp и кириллица Отправлено: altai от Июля 21, 2011, 19:32 Доброго всем времени суток, возникла проблема использование QRegExp для кириллицы, не находятся вхождения для строки:
344039, Россия, Ростовская область, Шахты, Некий переулок, 12 Код: QRegExp rx1("^\\d{6}\\,\\s[А-Я][а-я]*\\,\\s[А-Я][а-я]*\\s[а-я]*\\,\\s[А-Я][а-я]*\\,\\s[А-Я][а-я]*\\s(улица|переулок|бульвар|шоссе)\\,\\s\\d*"); Название: Re: QRegExp и кириллица Отправлено: zenden от Июля 21, 2011, 21:41 Я взял ваш код и проверил. Программа печатает There.
Значит у вас проблема именно в кодировке. rx1.indexIn(line.toUtf8()) -> здесь преобразовывать ничего не нужно, достаточно написать Код: rx1.indexIn(line) Все проблемы с кодировками Qt решаются по единому алгоритму: Главное помнить, что QString ВСЕГДА хранит строку в кодировке UTF-16. Ваша задача - добиться того, чтобы все данные в других кодировках были преобразованы в QString правильно. Вы должны четко понимать, в какой кодировке хранятся исходные коды вашей программы. Предположим, что это utf-8 без BOM. Для такого случая нужно написать в начале программы Код
Вы должны точно знать, в какой кодировке ваши входные данные (файл "input.txt"). Некоторые кодировки Qt может распознать сама, про другие ей надо подсказать. (Qt может распознать кодировку, только если вначале файла стоит метка BOM (Byte Order Mark)). Если же, например, файл сохранен в кодировке windows-1251, нужно об этом сообщить классу QTextStream: Код
Название: Re: QRegExp и кириллица Отправлено: altai от Июля 22, 2011, 07:48 zenden, спасибо, проблема решена, думал придется регулярку в Юникод переводить.
|