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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.62
uienifer
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 42
#1

Как перевести символы из ASCII в ANSI - C++

24.11.2010, 10:06. Просмотров 4585. Ответов 5
Метки нет (Все метки)

Читаю файл который в ASCII нужно переконвертить его в ANSI. Что делать???
Помогите, третий день мучаюсь...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 10:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как перевести символы из ASCII в ANSI (C++):

Перевести Unicode строку в ANSI - C++
char label_ansi; wchar_t label_wide; sprintf_s (label_ansi, "%ls", label_wide); // работает, но если и когда появляется не-ascii...

Обработка .txt кодировка ANSI и UTF-8 (буква "я" в ANSI воспринимается как EOF) - C++
Есть следующий кусок кода: FILE* fp = fopen("G:\OPND1.txt", "r"); if (fp!=NULL) // если файл удалось открыть { while((ch =...

Ascii символы - C++
Добрый день, подскажите почему неправильно выводятся русские заглавные буквы? Английские выводятся. void ascii( const char* text, char*...

Конвертер в символы ASCII - C++
Нужно написать програму которая из файла берет даные и конвертирует их в код ASCII и потом записывает их в другой файл. Как это сделать?

Русские символы из ASCII - C++
Программа отправляет "POST" запрос в гугл Speech и сохраняет ответ. Но сохраняет в ASCII. Текстовый редактор читает это нормально, а вот...

Перевести текст в кодировку ASCII - C++
перевести текст"Daria" в код ASCII

5
zyablik
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 40
25.11.2010, 19:08 #2
Вопрос некорректный

Если зто русский текст, и тебе его надо перевести из ондной кодировки в другую, например из 866 в 1251 или KOI. Удобней всего это делать по таблице xlat - где каждая буква требуемой кодировки идет под номером букв кодировки начального текста (например ASCII номер буквы 'A' 80, а
в cp 1251 - с0), конечно можно использовать побитный сдвиг или умножение но буква 'Ё' не совпадает.

Английский текст в ASCII и ANSI одинаковый.
0
uienifer
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 42
25.11.2010, 19:14  [ТС] #3
А можно примерчик? хоть какой нибудь захудалый. А то я скоро с ума сойду. Обьясняю проблему подробнее: у меня есть файлы, текстовые, когда их открываешь в винде- там иероглифы. Мне нужно эти файлы прочитать, естественно, что VC тоже считывает иероглифы. Как мне сделать так чтоб VC видел их как нормальные???
0
uienifer
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 42
25.11.2010, 19:15  [ТС] #4
P.S. Текст в файлах - украинский
0
zyablik
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 40
01.12.2010, 01:41 #5
Значит они закодированы не cp1251 а cp866 или koi8 или еще чемто. Если ты не знаеш кодировку это програмно можно сделать. Но если тебе не нужен распознаватель кодировкок, то проще будет чтоб ты сделал пост своих мероглифов сюда прямо с файла. Я узнаю что это за кодирровка и как его правильно загрузить в MSVC.
0
uienifer
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 42
01.12.2010, 09:16  [ТС] #6
Спасибо большое всем за помощь. Если кому надо, то это можно сделать так:
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
36
37
38
39
40
41
42
43
44
45
46
47
bool COldDbfEd::decode(char *s)
{
 
        int a[]={      //KOI_2_WIN
                0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,
                        0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,
                        0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,
                        0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,
 
                        0x000 ,0x000 ,0x000 ,0x038 ,0x000 ,0x000 ,0x000 ,0x000 ,
                        0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,
                        0x000 ,0x000 ,0x000 ,0x028 ,0x000 ,0x000 ,0x000 ,0x000 ,
                        0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,0x000 ,
 
                        0x07E ,0x060 ,0x061 ,0x076 ,0x064 ,0x065 ,0x074 ,0x063 ,
                        0x075 ,0x068 ,0x069 ,0x06A ,0x06B ,0x06C ,0x06D ,0x06E ,
                        0x06F ,0x07F ,0x070 ,0x071 ,0x072 ,0x073 ,0x066 ,0x062 ,
                        0x07C ,0x07B ,0x067 ,0x078 ,0x07D ,0x079 ,0x077 ,0x07A ,
 
                        0x05E ,0x040 ,0x041 ,0x056 ,0x044 ,0x045 ,0x054 ,0x043 ,
                        0x055 ,0x048 ,0x049 ,0x04A ,0x04B ,0x04C ,0x04D ,0x04E ,
                        0x04F ,0x05F ,0x050 ,0x051 ,0x052 ,0x053 ,0x046 ,0x042 ,
                        0x05C ,0x05B ,0x047 ,0x058 ,0x05D ,0x059 ,0x057 ,0x05A };
 
        if (decod==1)
        {
                while ( *(s)!=0 )
                {
                        if ( unsigned char(*(s))>127 && unsigned char(*(s))<176) *(s)+=64;
                        else
                                if ( unsigned char(*(s))>223 && unsigned char(*(s))<240) *(s)+=16;
                        s++;
                }
                return true;
        }
        if (decod==2)
        {
                while ( *(s)!=0 )
                {
                        if ( unsigned char(*(s))>0x080 && unsigned char(*(s))<0x0ff)
                                *(s)=a[unsigned char(*(s))-0x080]+0x080;
                        s++;
                }
                return true;
        }
return true;
}
Код писала не я - нашла в инете, но автора не помню. Так что пусть он меня простит за плагиат.И спасибо ему за свободный доступ к исходникам такой нужной прожки как его конвертор
0
01.12.2010, 09:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2010, 09:16
Привет! Вот еще темы с ответами:

Заменить символы в строке (ASCII) - C++
Есть строка с некоторым набором символов: string consoleText = &quot;Здесь должен быть текст&quot;; Возможно ли заменить какой-либо символ на...

Перевести в ASCII код русские буквы - C++
Ребят, возникла проблема перевод в ascii код русские буквы. В инетрнете нашел что надо использовать unsigned char но он не правильно...

Не могу перевести из двоичного кода в ASCII - C++
Есть ли в C++ функция получения кода ASCII по двоичному, и наоборот? Имею массив: char t=; Как преобразовать данный массив в...

Перевести из int в string по таблице ascii - C++
подскажите как перевести из числа в символ? есть int a = 97; как получить std::string = &quot;a&quot; ?


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

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

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