Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/22: Рейтинг темы: голосов - 22, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 28.07.2013
Сообщений: 30
1

Кодировкой (1251 и UTF-8) как перекодировать или что с ней сделать

26.11.2013, 17:21. Просмотров 4311. Ответов 7
Метки нет (Все метки)

Пишу програму на 6 Builder C++ , вытягивает HTML текст с сайта. С одним сайтом все в порядке, когда дело касается другого сайта, текст (кирилицу) считывает кракозяброй если не ошибаюсь Вин 1251 и с этим текстом не возможно работать в 6 Builder C++ . Вот пример текста

У каждого из нас скопились десятки ненужных и сломанных гаджетов.
в Nopade меняю кодировку на UTF-8 все в порядке. Если кто может подскажите как победить кодировку. У кого есть какая-нибудь функция для перекодировки или где ее можно взять, мой RESPECT....
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.11.2013, 17:21
Ответы с готовыми решениями:

UTF-16 -> cp-1251(windows-1251)
У меня есть кириллическая строка UTF-16, которая выглядит как Хотелось бы конвертнуть её в...

Как перекодировать данные из windows-1251 в UTF-8?
Как перекодировать данные из windows-1251 в UTF-8? Заранее спасибо за совет!

Как сделать кодировкой проекта Windows-1251
по умолчанию при создании проекта модуль главной формы находится в кодировке UTF8 как сделать...

Библиотека PHP Simple HTML DOM. Непонятки с кодировкой - результат выдается в win-1251, а надо в utf-8.
Сам файл библиотеки в utf-8. Файл скрипта также в utf-8. В настройках библиотеки по умолчанию...

7
Практикантроп
4578 / 2524 / 465
Регистрация: 23.09.2011
Сообщений: 5,420
26.11.2013, 17:44 2
А вот эта тема (Скачивание текста с сайта) не помогла?
0
Почемучка)
1243 / 303 / 30
Регистрация: 23.12.2010
Сообщений: 2,000
Записей в блоге: 1
26.11.2013, 18:12 3
Лучший ответ Сообщение было отмечено как решение

Решение

nick42, TEncoding::UTF8 нет в BCB6
gegart, примерно можно так определить UTF8 и перевести текст в 1251
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
 
static std::string xcode(LPCSTR src, UINT srcCodePage, UINT dstCodePage)
{
    int wsize = MultiByteToWideChar(srcCodePage, 0, src, -1, 0, 0);
    LPWSTR wbuf = (LPWSTR)new char[wsize * sizeof(WCHAR)];
    MultiByteToWideChar(srcCodePage, 0, src, -1, wbuf, wsize);
    int size = WideCharToMultiByte(dstCodePage, 0, wbuf, -1, 0, 0, 0, 0);
    LPSTR buf = (LPSTR)new char[size * sizeof(CHAR)];
    WideCharToMultiByte(dstCodePage, 0, wbuf, -1, buf, size, 0, 0);
    delete [] wbuf;
    std::string res = buf;
    delete [] buf;
    return res;
}
 
TRegExpr *re = new TRegExpr;
    re->InputString = Memo1->Lines->Text;
    re->Expression = ("Р.Р.[РС]");
    re->Compile();
    if(re->Exec(re->InputString))
    {
    if (re->SubExprMatchCount<5)
            {
            std::string s = xcode(Memo1->Lines->Text.c_str(), CP_UTF8, CP_ACP);
            ShowMessage("Текст в UTF8");
            }
        }
    delete re;
3
0 / 0 / 0
Регистрация: 28.07.2013
Сообщений: 30
26.11.2013, 19:38  [ТС] 4
Ddv122 Большое спасибо, работает. Вопрос еще, описание этой функции есть. Хотелось разобраться...
0
Почемучка)
1243 / 303 / 30
Регистрация: 23.12.2010
Сообщений: 2,000
Записей в блоге: 1
26.11.2013, 19:52 5
gegart, кажись в этом MSDN поможет
0
67 / 55 / 8
Регистрация: 26.07.2013
Сообщений: 377
28.11.2013, 11:03 6
- Ddv122, скажите пожалуйста, где описан класс TRegExpr? Еще не доводилось пользоваться.
0
случайный прохожий
1491 / 972 / 372
Регистрация: 20.07.2013
Сообщений: 2,848
28.11.2013, 12:20 7
Лучший ответ Сообщение было отмечено как решение

Решение

Скачиваешь RegExpr.pas отсюда: http://regexpstudio.com/RU/TRegExpr/TRegExpr.html (допустим, http://regexpstudio.com/Downloads/regexpr_RU.zip).
Далее (http://regexpstudio.com/RU/TRegExpr/Help/FAQ.html):
В.
Как использовать TRegExpr в Borland C++ Builder?
Я не могу это сделать, потому что нет заголовочных файлов (.h или .hpp).
О.
· Добавьте RegExpr.pas в Ваш bcb-проект
· Откомпилируйте проект. В результате автоматически будет создан hpp-файл (сообщения об ошибках можно проигнорировать)
· Теперь Вы можете использовать класс TRegExpr в своем проекте. Не забывайте добавлять #include "RegExpr.hpp" в соответствующие cpp-файлы [или заголовочные h-файлы]
· Не забудьте заменить в регулярных выражениях все символы '\' на '\\'.
Изучаешь синтаксис и интерфейс. Пользуешься.
3
Почемучка)
1243 / 303 / 30
Регистрация: 23.12.2010
Сообщений: 2,000
Записей в блоге: 1
28.11.2013, 14:14 8
Staut, можно регулярку и не использовать
она не универсальна - просто проверяет если ли в тексте последовательность Р Р (P или С) что характерно для UTF 8 и если да - то переводит с UTF8 - в 1251 ...
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2013, 14:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Кодировка UTF-8 или Win-1251?
В коде скрипта указано &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html;...

Как Консольное-приложение в Lazarus сдружить c кодировкой Unicode или Unicode Big Endian или UTF-8
Нужно чтобы Lazarus отображал символы псевдографики желательно все, но в основном вот эти......

IE: текст из base64 в 1251 как перекодировать?
На странице IE получаю от веб-сервиса base64-текст (потому что передается русскоязычный xml). ...

Как перекодировать файл из koi8r -> CP 1251
Файл в кодировке koi8r. Пытаюсь работать с ним в tex. Нужно перекодировать в cp1251, иначе текст...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.