я пытаюсь разобрать текст с HTML экранирующих последовательностями и хочу chnage это esaceps с их utf8 equvivalents:Анализировать HTML избежать последовательностей с повышающим духом
- 0xC2A0 utf8 representation
­ - 0xC2AD utf8 representation
И есть gramar решить эту
template <typename Iterator>
struct HTMLEscape_grammar : qi::grammar<Iterator, std::string()>
{
HTMLEscape_grammar() :
HTMLEscape_grammar::base_type(text)
{
htmlescapes.add(" ", 0xC2AD);
htmlescapes.add("­", 0xC2AD);
text = +((+(qi::char_ - htmlescapes)) | htmlescapes);
}
private:
qi::symbols<char, uint32_t> htmlescapes;
qi::rule<Iterator, std::string()> text;
};
но когда мы разбираем
std::string l_test = "test­as test simple­test";
HTMLEscape_grammar<std::string::const_iterator> l_gramar;
std::string l_ast;
bool result = qi::parse(l_test.begin(), l_test.end(), l_gramar, l_ast);
мы не получаем utf8 строку, 0xC2 часть utf8 символов просто вырезать, и мы идем t просто строка ascii. Этот анализатор является блоком сборки более мощной системы, поэтому требуется выход utf8.
sehe вам ответы Лучше, как всегда – tantra35
Не всегда, но спасибо. Я надеюсь, что это то, что вы намеревались делать, в любом случае – sehe