Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/88: Рейтинг темы: голосов - 88, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 64
1

Перекодировка строки из cp1251 в UTF8

26.03.2017, 11:27. Показов 16439. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. У меня есть строка в cp1251, но мне нужно вывести в utf8. Как это лучше реализовать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2017, 11:27
Ответы с готовыми решениями:

Перекодировка строки из UTF8 в cp1251
Доброго времени суток. Почему не получается из UTF8 преобразовать в cp1251? std::string...

Конвертер из UTF8 - cp1251 и наоборот
Доброго времени суток. Я понимаю, что данная тема уже поднималась на форуме, но я нашел код на c#...

Текст в кодировке cp1251 перевести в utf8 и обратно?
Здорова! Вот есть код: #include <iostream> using std::cout; using std::endl; using std::cerr;...

Перекодировка строки cp1251 в utf8
Здравствуйте! Помогите советом, плз. Нужно получить заголовок страницы, и, если кодировка страницы...

9
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
26.03.2017, 11:54 2
Где лучше? Ты чем пользуешься?
0
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 64
26.03.2017, 12:10  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Где лучше? Ты чем пользуешься?
vs community 2015
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
26.03.2017, 12:25 4
Вывести куда? Откуда?
0
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 64
26.03.2017, 13:03  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
Вывести куда? Откуда?
В функцию из сторонней библиотеке, которая уже будет выводить, но для неё нужна строка в utf8.
А при простом вводе кодировка cp1251. Возможно, не правильно объяснил, но думаю суть понятна.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
26.03.2017, 13:24 6
Вот здесь пример:
Windows. iconv и командная строка
Только идентификаторы кодировок поменяй.
0
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 64
26.03.2017, 13:59  [ТС] 7
Цитата Сообщение от nmcf Посмотреть сообщение
Вот здесь пример:
Windows. iconv и командная строка
Только идентификаторы кодировок поменяй.
Вот нашёл такую функцию, но ток чё-т всё равно символы все в вопросительные знаки превращаются.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
std::string cp1251_to_utf8(const char *string)
{
    std::string res;
    int result_u, result_c;
    result_u = MultiByteToWideChar(1251, 0, str, -1, 0, 0);
    if (!result_u)
        return 0;
    wchar_t *ures = new wchar_t[result_u];
    if (!MultiByteToWideChar(1251, 0, str, -1, ures, result_u)) {
        delete[] ures;
        return 0;
    }
    result_c = WideCharToMultiByte(CP_UTF8, 0, ures, -1, 0, 0, 0, 0);
    if (!result_c) {
        delete[] ures;
        return 0;
    }
    char *cres = new char[result_c];
    if (!WideCharToMultiByte(CP_UTF8, 0, ures, -1, cres, result_c, 0, 0)) {
        delete[] cres;
        return 0;
    }
    delete[] ures;
    res.append(cres);
    delete[] cres;
    return res;
}
В чём может быть проблема?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
26.03.2017, 15:45 8
рандомнейм, байки не рассказывай. Это даже не скомпилируется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
std::string cp1251_to_utf8(const char *str)
{
    std::string res;
    WCHAR *ures = NULL:
    char *cres = NULL;
 
    int result_u = MultiByteToWideChar(1251, 0, str, -1, 0, 0);
    if (result_u != 0)
    {
        ures = new WCHAR[result_u];
        if (MultiByteToWideChar(1251, 0, str, -1, ures, result_u))
        {
            int result_c = WideCharToMultiByte(CP_UTF8, 0, ures, -1, 0, 0, 0, 0);
            if (result_c != 0)
            {
                cres = new char[result_c];
                if (WideCharToMultiByte(CP_UTF8, 0, ures, -1, cres, result_c, 0, 0))
                {
                    res = cres;
                }
            }
        }
    }
 
    delete[] ures;
    delete[] cres;
 
    return res;
}
1
0 / 0 / 0
Регистрация: 17.03.2017
Сообщений: 64
01.08.2017, 21:01  [ТС] 9
А если utf8 в cp1251 переводить, то будет выглядеть так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
std::string utf8_to_cp1251(const char *str) {
    std::string res;
    WCHAR *ures = NULL;
    char *cres = NULL;
 
    int result_u = MultiByteToWideChar(CP_UTF8, 0, str, -1, 0, 0);
    if (result_u != 0)
    {
        ures = new WCHAR[result_u];
        if (MultiByteToWideChar(CP_UTF8, 0, str, -1, ures, result_u))
        {
            int result_c = WideCharToMultiByte(1251, 0, ures, -1, 0, 0, 0, 0);
            if (result_c != 0)
            {
                cres = new char[result_c];
                if (WideCharToMultiByte(1251, 0, ures, -1, cres, result_c, 0, 0))
                {
                    res = cres;
                }
            }
        }
    }
 
    delete[] ures;
    delete[] cres;
 
    return res;
}
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,706
06.08.2017, 18:07 10
Да.
0
06.08.2017, 18:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2017, 18:07
Помогаю со студенческими работами здесь

из utf8 в cp1251
Всем привет ! Собственно сразу вопрос - как троку перекодировать из utf8 в cp1251 и обратно ? ...

преобразования utf8 <-> cp1251
Какими функциями лучше всего воспользоваться для преобразований utf8 в cp1251 и обратно ?

Перевод из cp1251 в utf8
Как перевести программно на C# это: %CA%D0%C8% в читабельный текст?

Перекодировка из UTF-8 в cp1251 ( AJAX и PHP )
Здраствуйте! Нужен совет по AJAX. Вот файл с AJAX: &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru