С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

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

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

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

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

Добавлено через 1 час 2 минуты
То есть из cp437 в utf-8.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2016, 16:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение файла (с кракозябрами) с однобайтовой кодировкой, конвертация в UTF-8 и вывод в другой файл (C++):

Запись файла с кодировкой UTF-8 - C++ Builder
Нужно из Edit1 считать некое число и сохранить его в файле с кодировкой UTF-8. В интернете нашел функцию WideString, но не нашел как с...

Сохранение из Memo в файл с кодировкой utf-8 - C++ Builder
Всем привет. Нужно сохранить из мемо текст с кодировкой UTF-8 без OBM. Как сделать? if(SaveHTML->Execute()) { ...

Кодировкой (1251 и UTF-8) как перекодировать или что с ней сделать - C++ Builder
Пишу програму на 6 Builder C++ , вытягивает HTML текст с сайта. С одним сайтом все в порядке, когда дело касается другого сайта, текст...

Неверное чтение файла в другой кодировке - Visual C++
Помогите исправить #include "stdafx.h" #include "conio.h" #include <fstream> #include "stdio.h" #include <string> #include...

Чтение из одного файла и запись в другой файл winAPI c++ - C++ WinAPI
Всем привет уже битый час туплю. Короче нужно переписать всю информацию из одного файла в другой(не копировать файл) и вопрос в том как это...

Чтение файла в кодировке utf-8 и вывод в консоль - C++
Здорова! Пытаюсь прочитать файл в кодировке utf-8 (вот он ) и вывожу его в консоль, ничего не получается. Вот код: #include...

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

Конвертеры
0
Aliksan
5 / 5 / 2
Регистрация: 22.09.2015
Сообщений: 137
12.10.2016, 22:41  [ТС] #3
Тут готовая программа, а можно увидеть исходники?
0
gazlan
3133 / 1909 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
12.10.2016, 22:51 #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);
      }
   }
1
12.10.2016, 22:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2016, 22:51
Привет! Вот еще темы с ответами:

Чтение бинарного файла в поток std::ifstream и вывод в другой бинарный файл std::ofstream (создание копии) - C++
Проверил работу программы на маленькой картинке(744 байт). Все работает. С несколько бОльшими файлами(512КБ) нет. Суть задачи в том,...

Считать текст из файла с кодировкой utf-16 LE - C++
Возникла кое-какая проблема. У меня имеется xml файл, в кодировке UTF-16 LE с определенным содержимым. На данный момент мне нужно получить...

Конвертация из ASCII в UTF-32 или UTF-8 в UTF-32 - C++
Собсно сабж.

Чтение массива из файла, его преобразование и запись в другой файл - C++
Всем привет. Есть вот такой код: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;fstream&gt; #include &lt;string&gt; using...


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

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

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