MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Получить hex значение символа кириллицы c++"
Answer 950058
Вам нужно преобразовать строку в UTF-8 перед тем, как получать hex-представление. Можно использовать, например, codecvt_utf8_utf16:
#include <stdio.h> #include <tchar.h> #include <locale.h> #include <iostream> #include <string> #include <locale> #include <codecvt> int _tmain(int argc, _TCHAR* argv[]) { setlocale(LC_ALL,"Russian"); wchar_t wide_str[] = L"жизнь"; wchar_t hex_buffer[256] = L""; wchar_t buf[32]; //преобразуем строку в UTF-8 std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>, wchar_t> utf16conv; auto utf8_str = utf16conv.to_bytes(wide_str); //преобразуем UTF-8 в hex-представление for(int i=0;i<utf8_str.length();i++){ swprintf(buf, L"%%%x",(unsigned int)(unsigned char)(utf8_str.c_str()[i])); wcscat(hex_buffer,buf); } wprintf(L"%s = %s\n",wide_str,hex_buffer); getchar(); return 0; } // Результат: // // жизнь = %d0%b6%d0%b8%d0%b7%d0%bd%d1%8c
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.