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

C++

Войти
Регистрация
Восстановить пароль
 
Aliksan
5 / 5 / 2
Регистрация: 22.09.2015
Сообщений: 137
#1

Чтение файла (с кракозябрами) с однобайтовой кодировкой, конвертация в UTF-8 и вывод в другой файл - C++

12.10.2016, 16:27. Просмотров 270. Ответов 3
Метки нет (Все метки)

Добрый день, форумчане.
Может у кого есть заготовка или кто поделится советом, необходимо прочитать файл (с кракозябрами) с однобайтовой кодировкой, переконвертировать в UTF-8 и выввести в другой файл. Сам файл на английском языке.

Добавлено через 1 час 2 минуты
То есть из cp437 в utf-8.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2016, 16:27     Чтение файла (с кракозябрами) с однобайтовой кодировкой, конвертация в UTF-8 и вывод в другой файл
Посмотрите здесь:
C++ Чтение файла в кодировке utf-8 и вывод в консоль
C++ Чтение бинарного файла в поток std::ifstream и вывод в другой бинарный файл std::ofstream (создание копии)
Запись файла с кодировкой UTF-8 C++ Builder
C++ Builder Сохранение из Memo в файл с кодировкой utf-8
Считать текст из файла с кодировкой utf-16 LE C++
Конвертация из CP866 в UTF-8 данных из dbf файла C++ Linux
Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32 C++
C++ WinAPI Чтение из одного файла и запись в другой файл winAPI c++
C++ Чтение массива из файла, его преобразование и запись в другой файл
C++ Вывод в файл и последующее чтение из файла объектов класса
Добавить вывод в файл и чтение из файла объектов класса C++
Кодировкой (1251 и UTF-8) как перекодировать или что с ней сделать C++ Builder

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
12.10.2016, 18:43     Чтение файла (с кракозябрами) с однобайтовой кодировкой, конвертация в UTF-8 и вывод в другой файл #2
Цитата Сообщение от Aliksan Посмотреть сообщение
Сам файл на английском языке
Для латиницы UTF-8 совпадает с ASCII.

Конвертеры
Aliksan
5 / 5 / 2
Регистрация: 22.09.2015
Сообщений: 137
12.10.2016, 22:41  [ТС]     Чтение файла (с кракозябрами) с однобайтовой кодировкой, конвертация в UTF-8 и вывод в другой файл #3
Тут готовая программа, а можно увидеть исходники?
gazlan
3130 / 1905 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
12.10.2016, 22:51     Чтение файла (с кракозябрами) с однобайтовой кодировкой, конвертация в UTF-8 и вывод в другой файл #4
Простая табличная подстановка.
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
30
31
32
33
34
35
static int  pXLIT[ASCII_SIZE] =
{
   0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, 0x00000005, 0x00000006, 0x00000007,
   0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, 0x0000000D, 0x0000000E, 0x0000000F,
   0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, 0x00000015, 0x00000016, 0x00000017,
   0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, 0x0000001D, 0x0000001E, 0x0000001F,
   0x00000020, 0x00000021, 0x00000022, 0x00000023, 0x00000024, 0x00000025, 0x00000026, 0x00000027,
   0x00000028, 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F,
   0x00000030, 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000037,
   0x00000038, 0x00000039, 0x0000003A, 0x0000003B, 0x0000003C, 0x0000003D, 0x0000003E, 0x0000003F,
   0x00000040, 0x00000041, 0x00000042, 0x00000043, 0x00000044, 0x00000045, 0x00000046, 0x00000047,
   0x00000048, 0x00000049, 0x0000004A, 0x0000004B, 0x0000004C, 0x0000004D, 0x0000004E, 0x0000004F,
   0x00000050, 0x00000051, 0x00000052, 0x00000053, 0x00000054, 0x00000055, 0x00000056, 0x00000057,
   0x00000058, 0x00000059, 0x0000005A, 0x0000005B, 0x0000005C, 0x0000005D, 0x0000005E, 0x0000005F,
   0x00000060, 0x00000061, 0x00000062, 0x00000063, 0x00000064, 0x00000065, 0x00000066, 0x00000067,
   0x00000068, 0x00000069, 0x0000006A, 0x0000006B, 0x0000006C, 0x0000006D, 0x0000006E, 0x0000006F,
   0x00000070, 0x00000071, 0x00000072, 0x00000073, 0x00000074, 0x00000075, 0x00000076, 0x00000077,
   0x00000078, 0x00000079, 0x0000007A, 0x0000007B, 0x0000007C, 0x0000007D, 0x0000007E, 0x0000007F,
   0x000082D0, 0x000083D0, 0x009A80E2, 0x000093D1, 0x009E80E2, 0x00A680E2, 0x00A080E2, 0x00A180E2,
   0x00AC82E2, 0x00B080E2, 0x000089D0, 0x00B980E2, 0x00008AD0, 0x00008CD0, 0x00008BD0, 0x00008FD0,
   0x000092D1, 0x009880E2, 0x009980E2, 0x009C80E2, 0x009D80E2, 0x00A280E2, 0x009380E2, 0x009480E2,
   0x000098C2, 0x00A284E2, 0x000099D1, 0x00BA80E2, 0x00009AD1, 0x00009CD1, 0x00009BD1, 0x00009FD1,
   0x0000A0C2, 0x00008ED0, 0x00009ED1, 0x000088D0, 0x0000A4C2, 0x000090D2, 0x0000A6C2, 0x0000A7C2,
   0x000081D0, 0x0000A9C2, 0x000084D0, 0x0000ABC2, 0x0000ACC2, 0x0000ADC2, 0x0000AEC2, 0x000087D0,
   0x0000B0C2, 0x0000B1C2, 0x000086D0, 0x000096D1, 0x000091D2, 0x0000B5C2, 0x0000B6C2, 0x0000B7C2,
   0x000091D1, 0x009684E2, 0x000094D1, 0x0000BBC2, 0x000098D1, 0x000085D0, 0x000095D1, 0x000097D1,
   0x000090D0, 0x000091D0, 0x000092D0, 0x000093D0, 0x000094D0, 0x000095D0, 0x000096D0, 0x000097D0,
   0x000098D0, 0x000099D0, 0x00009AD0, 0x00009BD0, 0x00009CD0, 0x00009DD0, 0x00009ED0, 0x00009FD0,
   0x0000A0D0, 0x0000A1D0, 0x0000A2D0, 0x0000A3D0, 0x0000A4D0, 0x0000A5D0, 0x0000A6D0, 0x0000A7D0,
   0x0000A8D0, 0x0000A9D0, 0x0000AAD0, 0x0000ABD0, 0x0000ACD0, 0x0000ADD0, 0x0000AED0, 0x0000AFD0,
   0x0000B0D0, 0x0000B1D0, 0x0000B2D0, 0x0000B3D0, 0x0000B4D0, 0x0000B5D0, 0x0000B6D0, 0x0000B7D0,
   0x0000B8D0, 0x0000B9D0, 0x0000BAD0, 0x0000BBD0, 0x0000BCD0, 0x0000BDD0, 0x0000BED0, 0x0000BFD0,
   0x000080D1, 0x000081D1, 0x000082D1, 0x000083D1, 0x000084D1, 0x000085D1, 0x000086D1, 0x000087D1,
   0x000088D1, 0x000089D1, 0x00008AD1, 0x00008BD1, 0x00008CD1, 0x00008DD1, 0x00008ED1, 0x00008FD1
};
C++
1
2
3
4
5
6
7
8
static void Cyrillic_2_UTF8(DWORD& rDst,BYTE bySrc)
{  
   rDst = 0;  // Reset
 
   int   iRet = pXLIT[bySrc];
   
   strcat((char*)&rDst,(char*)&iRet); 
}
C++
1
2
3
4
5
6
7
8
9
10
11
   for (DWORD ii = 0; ii < dwSize; ++ii)
   {
      DWORD    dwTemp = 0;
 
      Cyrillic_2_UTF8(dwTemp,pBuf[ii]);
 
      if (dwTemp)
      {
         fprintf(pOut,"%s",(char*)&dwTemp);
      }
   }
Yandex
Объявления
12.10.2016, 22:51     Чтение файла (с кракозябрами) с однобайтовой кодировкой, конвертация в UTF-8 и вывод в другой файл
Ответ Создать тему
Опции темы

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