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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 34, средняя оценка - 4.62
uienifer
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 42
24.11.2010, 10:06     Как перевести символы из ASCII в ANSI #1
Читаю файл который в ASCII нужно переконвертить его в ANSI. Что делать???
Помогите, третий день мучаюсь...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zyablik
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 40
25.11.2010, 19:08     Как перевести символы из ASCII в ANSI #2
Вопрос некорректный

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

Английский текст в ASCII и ANSI одинаковый.
uienifer
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 42
25.11.2010, 19:14  [ТС]     Как перевести символы из ASCII в ANSI #3
А можно примерчик? хоть какой нибудь захудалый. А то я скоро с ума сойду. Обьясняю проблему подробнее: у меня есть файлы, текстовые, когда их открываешь в винде- там иероглифы. Мне нужно эти файлы прочитать, естественно, что VC тоже считывает иероглифы. Как мне сделать так чтоб VC видел их как нормальные???
uienifer
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 42
25.11.2010, 19:15  [ТС]     Как перевести символы из ASCII в ANSI #4
P.S. Текст в файлах - украинский
zyablik
0 / 0 / 0
Регистрация: 11.06.2010
Сообщений: 40
01.12.2010, 01:41     Как перевести символы из ASCII в ANSI #5
Значит они закодированы не cp1251 а cp866 или koi8 или еще чемто. Если ты не знаеш кодировку это програмно можно сделать. Но если тебе не нужен распознаватель кодировкок, то проще будет чтоб ты сделал пост своих мероглифов сюда прямо с файла. Я узнаю что это за кодирровка и как его правильно загрузить в MSVC.
uienifer
0 / 0 / 0
Регистрация: 08.11.2010
Сообщений: 42
01.12.2010, 09:16  [ТС]     Как перевести символы из ASCII в ANSI #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;
}
Код писала не я - нашла в инете, но автора не помню. Так что пусть он меня простит за плагиат.И спасибо ему за свободный доступ к исходникам такой нужной прожки как его конвертор
Yandex
Объявления
01.12.2010, 09:16     Как перевести символы из ASCII в ANSI
Ответ Создать тему
Опции темы

Текущее время: 03:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru