![]() |
Я получаю сообщения из телеграмм чата с ботом, и как бы все хорошо но пока не начну отправлять русские символы ибо они превращаются вот в это "\u041f\u0440\u0438\u0432\u0435\u0442"(Это слово "Привет"). Как мне перевести этот текст как я понял из формата UTF8 в CP1251? Много каких-то функций с разных форумов попробовал но не одна не помогла :P
|
encoding юзай, примеров полно, можешь тут глянуть https://www.blast.hk/threads/121580/
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
C++: Код:
regex_search |
Цитата:
|
up
|
Цитата:
Код:
stdcredits: https://www.cyberforum.ru/cpp-beginners/thread1249547.html никогда не поздно научиться гуглить |
Цитата:
Код:
regex_searchhttps://forum.antichat.xyz/attachments/27990541/ Ничего не изменилось |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Вопрос. А водится хоть в правильной кодировке?
|
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
https://forum.antichat.xyz/attachments/27991004/ Либо ты не понял суть вопроса, в котором нуждался автор темы, либо я тебя сейчас не понимаю |
Цитата:
|
Цитата:
Ради простейшей задачи которая решается двумя функциями спасченных с интернета, подключать хост. Еще и на хосте ***ни наделал. А если мне смайлик отправят в телеге? Или украинскую i? Еще и под хайд убрал C++: Код:
#include usage: C++: [CODE] int main ( ) { setlocale ( LC_ALL , "en_US.utf8" ) ; std :: string input = R"(\u041f\u0440\u0438\u0432\u0435\u0442)" ; std :: cout |
[QUOTE="kin4stat"]
Ну ты и насрал конечно говна что пиздец Ради простейшей задачи которая решается двумя функциями спасченных с интернета, подключать хост. Еще и на хосте ***ни наделал. А если мне смайлик отправят в телеге? Или украинскую i? Еще и под хайд убрал C++: Код:
#include usage: C++: [CODE] int main ( ) { setlocale ( LC_ALL , "en_US.utf8" ) ; std :: string input = R"(\u041f\u0440\u0438\u0432\u0435\u0442)" ; std :: cout |
Цитата:
|
[QUOTE="kin4stat"]
Ну ты и насрал конечно говна что пиздец Ради простейшей задачи которая решается двумя функциями спасченных с интернета, подключать хост. Еще и на хосте ***ни наделал. А если мне смайлик отправят в телеге? Или украинскую i? Еще и под хайд убрал C++: Код:
#include usage: C++: [CODE] int main ( ) { setlocale ( LC_ALL , "en_US.utf8" ) ; std :: string input = R"(\u041f\u0440\u0438\u0432\u0435\u0442)" ; std :: cout https://forum.antichat.xyz/attachments/27991114/ А если без этого использовать то при наличии в строке любых символов кроме русских игра вылетает |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Щас кое-что попробую. Если получится, то отпишу после 21 по Киеву.
|
Цитата:
|
Цитата:
|
Цитата:
C++: Код:
#include same shit без регулярок: C++: [CODE] #include #include #include #include std :: vector split ( const std :: string & str , const std :: string & delim ) { std :: vector strings ; size_t start ; size_t end = 0 ; while ( ( start = str . find_first_not_of ( delim , end ) ) != std :: string :: npos ) { end = str . find ( delim , start ) ; strings . push_back ( str . substr ( start , end - start ) ) ; } return strings ; } std :: uint32_t utf8_encode ( char * out , uint32_t utf ) { if ( utf > 6 ) & 0x1F ) | 0xC0 ) ; out [ 1 ] = ( char ) ( ( ( utf >> 0 ) & 0x3F ) | 0x80 ) ; out [ 2 ] = 0 ; return 2 ; } else if ( utf > 12 ) & 0x0F ) | 0xE0 ) ; out [ 1 ] = ( char ) ( ( ( utf >> 6 ) & 0x3F ) | 0x80 ) ; out [ 2 ] = ( char ) ( ( ( utf >> 0 ) & 0x3F ) | 0x80 ) ; out [ 3 ] = 0 ; return 3 ; } else if ( utf > 18 ) & 0x07 ) | 0xF0 ) ; out [ 1 ] = ( char ) ( ( ( utf >> 12 ) & 0x3F ) | 0x80 ) ; out [ 2 ] = ( char ) ( ( ( utf >> 6 ) & 0x3F ) | 0x80 ) ; out [ 3 ] = ( char ) ( ( ( utf >> 0 ) & 0x3F ) | 0x80 ) ; out [ 4 ] = 0 ; return 4 ; } else { // error - use replacement character out [ 0 ] = ( char ) 0xEF ; out [ 1 ] = ( char ) 0xBF ; out [ 2 ] = ( char ) 0xBD ; out [ 3 ] = 0 ; return 0 ; } } std :: string cp_to_utf8 ( const std :: string & input ) { using namespace std :: string_literals ; std :: string out ; for ( auto i = 0u ; i Ну и тест: C++: [CODE] #include int main ( ) { setlocale ( LC_ALL , "en_US.utf8" ) ; std :: string input = u8 R"(КекЛолPizda\u041f\u0440\u0438\u0432\u0435 \u0442)" ; std :: cout |
[QUOTE="kin4stat"]
Сказал бы сразу C++: Код:
#include same shit без регулярок: C++: [CODE] #include #include #include #include std :: vector split ( const std :: string & str , const std :: string & delim ) { std :: vector strings ; size_t start ; size_t end = 0 ; while ( ( start = str . find_first_not_of ( delim , end ) ) != std :: string :: npos ) { end = str . find ( delim , start ) ; strings . push_back ( str . substr ( start , end - start ) ) ; } return strings ; } std :: uint32_t utf8_encode ( char * out , uint32_t utf ) { if ( utf > 6 ) & 0x1F ) | 0xC0 ) ; out [ 1 ] = ( char ) ( ( ( utf >> 0 ) & 0x3F ) | 0x80 ) ; out [ 2 ] = 0 ; return 2 ; } else if ( utf > 12 ) & 0x0F ) | 0xE0 ) ; out [ 1 ] = ( char ) ( ( ( utf >> 6 ) & 0x3F ) | 0x80 ) ; out [ 2 ] = ( char ) ( ( ( utf >> 0 ) & 0x3F ) | 0x80 ) ; out [ 3 ] = 0 ; return 3 ; } else if ( utf > 18 ) & 0x07 ) | 0xF0 ) ; out [ 1 ] = ( char ) ( ( ( utf >> 12 ) & 0x3F ) | 0x80 ) ; out [ 2 ] = ( char ) ( ( ( utf >> 6 ) & 0x3F ) | 0x80 ) ; out [ 3 ] = ( char ) ( ( ( utf >> 0 ) & 0x3F ) | 0x80 ) ; out [ 4 ] = 0 ; return 4 ; } else { // error - use replacement character out [ 0 ] = ( char ) 0xEF ; out [ 1 ] = ( char ) 0xBF ; out [ 2 ] = ( char ) 0xBD ; out [ 3 ] = 0 ; return 0 ; } } std :: string cp_to_utf8 ( const std :: string & input ) { using namespace std :: string_literals ; std :: string out ; for ( auto i = 0u ; i int main ( ) { setlocale ( LC_ALL , "en_US.utf8" ) ; std :: string input = u8 R"(КекЛолPizda\u041f\u0440\u0438\u0432\u0435 \u0442)" ; std :: cout |
| Время: 16:10 |