|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
15.01.2014, 17:51 | #1 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
boost_regex кирилица
Здравствуйте.
С помощью регулярных выражений извлекаю из строки логин и пароль Код:
Спасибо за внимание. Последний раз редактировалось Stilet; 16.01.2014 в 21:34. |
15.01.2014, 20:03 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
вам нужно сначала кодировку выравнять, у вас судя по всему там UTF8.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
15.01.2014, 20:21 | #3 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Да кодировка на клиенте и на сервере UTF8, а какая должна быть?
|
15.01.2014, 20:59 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
UCS2 или UCS4
wchar_t |
16.01.2014, 17:43 | #5 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Кодировок UCS2 или UCS4 у меня в CodeBlocks нет, а вот использовать wchar_t мне нельзя, вот тут по подробнее об этом написано http://programmersforum.ru/showthread.php?t=248261 , то есть мне нужно пользоваться кодировкой UTF8. Есть ли какой-нибудь выход из моей ситуации, то есть нужно всего лишь посчитать количество символов в строке std::string, если кирилица, то 2 символа считаю за один, если латиница, знак препинания или число, то 1 символ равен одному?
|
16.01.2014, 20:18 | #6 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
Мы начали с regex и закончили подсчетом символов в строке - так что собственно нужно?
UCS - это не кодировка. Скажем так UTF - это способ закодировать UCS. |
16.01.2014, 21:27 | #7 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Объясню по подробнее.
В общем данные из строки и латиницу, и кирилицу извлекаю нормально, только вот по количеству символов они отличаются. boost::regex Regex("Authorization=Login[\\S]{3,18}):Passw[\\S]{6,18});"); Вот например Логин был введён кирилицей, а пароль латиницей (Логин, Password). Получается так Логин = 10 символов (так как каждый символ в кирилице равен 2 байта). Password = 8 символов. Регулярное выражение которое выше не годится, так как если ввести более 9 символов на кирилице, то регулярное выражение вернёт FALSE. Поэтому я изменил значение в логине и пароле с [\\S]{3,18} на [\\S]{3,36}. Дальше мне нужно узнать из каких символов состоят логин и пароль, чтобы правильно подсчитать сколько символов в логине и пароле. Для латинских букв такая запись [a-zA-Z] работает, а вот для кирилици такая запись [а-яА-Я] не работает. Для правильного подсчета символов, мне нужно как-нибудь определить является ли символ кирилицей или латиницей, подскажите пожалуйста что для этого нужно сделать? |
16.01.2014, 21:45 | #8 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,331
|
А если пароль будет на "китаице", что тогда?
Если у вас только кирилица и латиница, зачем тогда вообще юникод нужен? http://www.boost.org/doc/libs/1_48_0.../uni_iter.html |
17.01.2014, 21:04 | #9 |
Форумчанин
Регистрация: 30.12.2010
Сообщений: 280
|
Я к сожалению английского не знаю, я так понял мне нужно вот это
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
кирилица | Игорь_С | Qt и кроссплатформенное программирование С/С++ | 2 | 01.04.2013 13:24 |
кирилица в консоли | AcTiV | Общие вопросы C/C++ | 4 | 26.12.2012 14:23 |
ЧПУ и Кирилица | joe | WordPress и другие CMS | 1 | 25.10.2010 14:36 |
idTCPserver и кирилица | BARNEY | Работа с сетью в Delphi | 7 | 21.10.2010 14:47 |
Кирилица в C++ | ROD | Помощь студентам | 2 | 06.12.2008 14:50 |