Не подскажет ли уважаемая общественность, как мне строки wchar_t закодированные как UTF-8 обрабатывать с помощью PCRE, в документации написано, что есть поддержка UTF-8, а функции принимают только строки char.
PS. Версия PCRE у меня 3.9. Новее нельзя. Никак.
PPS. Про boost::regex знаю, пробовал, все круто, но нельзя. Никак.
Dr.Offset пишет:
> Не подскажет ли уважаемая общественность, как мне строки wchar_t > закодированные как UTF-8 обрабатывать с помощью PCRE, в документации > написано, что есть поддержка UTF-8, а функции принимают только строки char.
UTF-8 -- это так называемый wide-character string, это char*, а не wchar_t*.
Здравствуйте, MasterZiv, Вы писали:
MZ>Dr.Offset пишет:
>> Не подскажет ли уважаемая общественность, как мне строки wchar_t >> закодированные как UTF-8 обрабатывать с помощью PCRE, в документации >> написано, что есть поддержка UTF-8, а функции принимают только строки char.
MZ>UTF-8 -- это так называемый wide-character string, это char*, а не wchar_t*.
Если в большинстве случаев UTF-8 можно читать в char*, это не значит, что во всех
MZ>Так что с PCRE всё в порядке.
Так я и не говорю, что не в порядке. Я спрашиваю как быть.
Здравствуйте, Dr.Offset, Вы писали: DO>Если в большинстве случаев UTF-8 можно читать в char*, это не значит, что во всех
А как ты себе представляешь utf8 не в char*?
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, Dr.Offset, Вы писали: DO>>Если в большинстве случаев UTF-8 можно читать в char*, это не значит, что во всех MC>А как ты себе представляешь utf8 не в char*?
Здравствуйте, Dr.Offset, Вы писали:
DO>Здравствуйте, MasterZiv, Вы писали:
MZ>>UTF-8 -- это так называемый wide-character string, это char*, а не wchar_t*.
DO>Кстати, wide-string это как раз wchar_t.
DO>UTF-8 это — [0..255]. Ясно, что в char не помещается. Зато помещается в unsigned char. Вопрос с PCRE по-прежнему открыт...
Во-первых, то, что для Вас char по умолчанию тождественен signed char и Вы не предполагаете иного — уже показательно.
Во-вторых — а не будет ли любезен благородный дон показать пример, когда signed char не проходит для таких применений? Только, пожалуйста, на реальных платформах и без сферических извращений в вакууме.
Здравствуйте, Dr.Offset, Вы писали:
DO>Здравствуйте, MasterZiv, Вы писали:
MZ>>UTF-8 -- это так называемый wide-character string, это char*, а не wchar_t*.
DO>Кстати, wide-string это как раз wchar_t.
DO>UTF-8 это — [0..255]. Ясно, что в char не помещается. Зато помещается в unsigned char. Вопрос с PCRE по-прежнему открыт...
знаковость char-а определяется настройками компилятора. Так что все помещается.
Здравствуйте, netch80, Вы писали:
N>Во-первых, то, что для Вас char по умолчанию тождественен signed char и Вы не предполагаете иного — уже показательно.
Грубо выдирая твои слова из контекста, хочу отметить, что никогда char не тождественен signed char или unsigned char:
Здравствуйте, netch80, Вы писали:
N>Во-первых, то, что для Вас char по умолчанию тождественен signed char и Вы не предполагаете иного — уже показательно.
TIGCC. Я не могу менять знаковость char только потому что мне так захотелось.
N>Во-вторых — а не будет ли любезен благородный дон показать пример, когда signed char не проходит для таких применений? Только, пожалуйста, на реальных платформах и без сферических извращений в вакууме.
Можно без сарказма и лишнего пафоса обойтись. Хамства вашего я ничем не заслужил.
Здравствуйте, Dr.Offset, Вы писали:
DO>Не подскажет ли уважаемая общественность, как мне строки wchar_t закодированные как UTF-8 обрабатывать с помощью PCRE, в документации написано, что есть поддержка UTF-8, а функции принимают только строки char.
Посмотри внутри у своего PCRE как он интерпретирует char как знаковый или нет.
То что он снаружи принимает char* вообще ни о чем не говорит.
Здравствуйте, Dr.Offset, Вы писали:
N>>Во-первых, то, что для Вас char по умолчанию тождественен signed char и Вы не предполагаете иного — уже показательно. DO>TIGCC.
И что?
DO> Я не могу менять знаковость char только потому что мне так захотелось.
Так всё-таки — там что, байты другие? У них не 8 бит? И представление одной и той же текстовой строки в восьмибитной кодировке будет иначе интерпретировано как текст в зависимости от того, написано signed или unsigned? Я хочу на это посмотреть.;))
N>>Во-вторых — а не будет ли любезен благородный дон показать пример, когда signed char не проходит для таких применений? Только, пожалуйста, на реальных платформах и без сферических извращений в вакууме. DO>Можно без сарказма и лишнего пафоса обойтись. Хамства вашего я ничем не заслужил.
Ну да, как вопрос по сути — так сразу "хамство". Так всё-таки расскажете? Пока что я не вижу никаких признаков того, что тут есть проблемы. Конверсия между строками типа char, unsigned char, signed char в ваших условиях возможна во все стороны без проблем для содержимого (хотя с очевидными проблемами для интерпретации в ряде случаев).
Здравствуйте, -MyXa-, Вы писали:
N>>Во-первых, то, что для Вас char по умолчанию тождественен signed char и Вы не предполагаете иного — уже показательно. MX>Грубо выдирая твои слова из контекста, хочу отметить, что никогда char не тождественен signed char или unsigned char:
Поправка тут действительно нужна — следовало сказать "по поведению" и процитировать стандарт:
The implementation shall define char to have the same range,
representation, and behavior as either signed char or unsigned char.
Здравствуйте, c-smile, Вы писали:
CS>Посмотри внутри у своего PCRE как он интерпретирует char как знаковый или нет. CS>То что он снаружи принимает char* вообще ни о чем не говорит.
А можно в двух словах, каким образом знаковость влияет на работу PCRE?
Dr.Offset пишет:
> MZ>UTF-8 -- это так называемый wide-character string, это char*, а не > wchar_t*. > > Если в большинстве случаев UTF-8 можно читать в char*, это не значит, > что во всех
Можно читать во всех случаях. Лишь бы буфер был достаточного размера.
> > MZ>Так что с PCRE всё в порядке. > > Так я и не говорю, что не в порядке. Я спрашиваю как быть.
Кодт пишет:
> CS>То что он снаружи принимает char* вообще ни о чем не говорит. > > А можно в двух словах, каким образом знаковость влияет на работу PCRE?
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, Кодт, Вы писали:
К>>А можно в двух словах, каким образом знаковость влияет на работу PCRE?
CS>Да вот тебе пример из жизни:
CS> return u8text[0] == 0xEF && CS> u8text[1] == 0xBB && CS> u8text[2] == 0xBF;
И что? Вижу пример, как знаковость влияет на плохо написанный код. Но не вижу, как она влияет на работу PCRE. Следует помнить, что это библиотека с длинной историей, богатой функциональностью и огромным накопленным опытом мультиплатформенного применения, и уж такими мелочами, как signed char, её не сломать.