Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.88
glob()
0 / 0 / 0
Регистрация: 02.09.2009
Сообщений: 12
#1

Перекодировка файла в C++ - C++

02.09.2009, 11:21. Просмотров 3331. Ответов 7
Метки нет (Все метки)

Работаю с С++ в юниксе. Компилятор - консольный gcc.
Надо прочесть файлы в кодировках windows-1251, koi8-r или utf-8 и переделать в utf-8 или windows-1251, что бы вся дальнейшая работа была в одной кодировке.
Подскажите, пожалуйста, какие функции есть в c++ для этого дела и где по ним почитать можно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2009, 11:21     Перекодировка файла в C++
Посмотрите здесь:

Перекодировка исходного файла под ДОС - C++
Скажите, как с помощью ФАРа перекодировать cpp файл, чтобы при компиляции и работе программы русские буквы были русскими (в самом borland с...

Перекодировка с Паскаля на C++ - C++
задача:задан в массиве вещественных чисел {aij} i и j от т1 до n, упорядочить по убыванию столбец,сумма элементов которого больше заданного...

libxslt libxml2 - Перекодировка - C++
Может кто знает как заставить указанные либы понимать на вход cp1251 и на выход соотвественно??? Из этого я понял что возможно ...

Перекодировка текстовых файлов - C++
Всем привет. По курсовому проекту возник вопрос. Я попытался сначала сделать на Delphi, всё вышло. Сейчас пытаюсь сделать на С++ ...

Перекодировка из EBCDIC в win1251 - C++
Помогите пожалуйста составить прогу перекодировки файла из EBCDIC в win1251

Перекодировка строки из cp1251 в UTF8 - C++
Доброго времени суток. У меня есть строка в cp1251, но мне нужно вывести в utf8. Как это лучше реализовать?

Перекодировка текста для вывода в окне - C++
Здравствуйте. Помогите реализовать перекодировку текстового файла с помощью функций CharToOem() и OemToChar(). После открытия текстового...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
02.09.2009, 11:43     Перекодировка файла в C++ #2
Можно даже облегчить себе работу и использовать стандартную команду iconv. Можешь прочитать о ней man iconv
Или:
http://www.opennet.ru/base/dev/iconv_c.txt.html
glob()
0 / 0 / 0
Регистрация: 02.09.2009
Сообщений: 12
02.09.2009, 12:09  [ТС]     Перекодировка файла в C++ #3
Цитата Сообщение от Vourhey Посмотреть сообщение
iconv
Спасибо большое!
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
02.09.2009, 12:19     Перекодировка файла в C++ #4
http://www.cyberforum.ru/cpp-linux/thread43639.html
glob()
0 / 0 / 0
Регистрация: 02.09.2009
Сообщений: 12
23.09.2009, 10:04  [ТС]     Перекодировка файла в C++ #5
А вот еще вопрос по iconv.
В man iconv написано, что если добавить к выходной кодировке //IGNORE, то будут опускаться всякие нечитабельные символы и выдача не будет на них прерываться. На практике так у меня не получилось.
Подскажите, пожалуйста, что не так написал:
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
string iconv_as_php(string code_from, string code_to, string code)
{
    iconv_t cd;
    size_t k, f, t;
    int se;
    char* in = (char*)code.c_str();
    char buf[1000];
    char* out = buf;
 
    cd = iconv_open(code_to.c_str(), code_from.c_str());
    if( cd == (iconv_t)(-1) )
    err( 1, "iconv_open" );
    f = strlen(code.c_str());
    t = sizeof buf;
    memset( &buf, 0, sizeof buf );
    errno = 0;
    k = iconv(cd, &in, &f, &out, &t);
    se = errno;
 
    iconv_close(cd);
 
    return buf;
}
 
enc = "windows-1251";
ret = iconv_as_php(enc, "UTF-8//IGNORE", ret);
Что с //IGNORE, что без него, выдача обрывается на первом нечитаемом символе.
glob()
0 / 0 / 0
Регистрация: 02.09.2009
Сообщений: 12
28.09.2009, 11:27  [ТС]     Перекодировка файла в C++ #6
Всё. Уже не надо.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
28.09.2009, 11:45     Перекодировка файла в C++ #7
Ты напиши - в чем была ошибка !
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2009, 12:03     Перекодировка файла в C++
Еще ссылки по теме:

Перекодировка char в char* - C++
Добрый вечер! Как привести char к char* для того, чтобы работала strcmp(str,"X"), например?

Перекодировка текстового файла - VBA
Здравствуйте! Есть макрос,который файл формата xlsx преобразует в kml. Но после преобразования,приходится открывать этот файл в нотпаде и...

.NET 4.x Перекодировка DBF файла из cp1251 в UTF-8 - C#
Есть dbf файл (база БИК), он сохранен в cp1251, как данные из него перекодировать в UTF-8? сам файл базы бик:...

Перекодировка текстового файла из ANSI в UTF-8 - CMD/BAT
Здравствуйте, я нашел такой BAT файл, который перекодирует txt файл из ANSI в UNICODE Как его можно изменить, чтобы перекодировка...

Перекодировка текстового файла из одной кодировки в другую - Turbo Pascal
Разработать в TurboPascal программу перекодировки текстового файла из одной кодировки в другую.


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

Или воспользуйтесь поиском по форуму:
glob()
0 / 0 / 0
Регистрация: 02.09.2009
Сообщений: 12
28.09.2009, 12:03  [ТС]     Перекодировка файла в C++ #8
Цитата Сообщение от odip Посмотреть сообщение
Ты напиши - в чем была ошибка !
Аа. Да всё просто оказалось.
C++
1
char buf[1000];
Памяти мало выделял. Текст не помещался и обрезался.

Вот так наиболее универсально:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
string iconv_as_php(string code_from, string code_to, string code)
{
    iconv_t cd;
    size_t k, f, t;
    int se;
    int need_size = code.length();
    char* in = (char*)code.c_str();
    char buf[need_size*2];
    char* out = buf;
 
    cd = iconv_open(code_to.c_str(), code_from.c_str());
    if (cd == (iconv_t)(-1)) err(1, "iconv_open");
    f = strlen(code.c_str());
    t = sizeof buf;
    errno = 0;
    k = iconv(cd, &in, &f, &out, &t);
    se = errno;
 
    iconv_close(cd);
 
    return buf;
}
Yandex
Объявления
28.09.2009, 12:03     Перекодировка файла в C++
Ответ Создать тему
Опции темы

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