Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранение файлов в различных кодировках 
:(
    Опции темы
artsb
Дата 4.1.2008, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Не подскажите, как научить программу сохранять файлы в выбранной кодировке. Типа как у блокнота. Спасибо.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
JackYF
Дата 4.1.2008, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(artsb @  4.1.2008,  00:26 Найти цитируемый пост)
сохранять файлы в выбранной кодировке.

Перекодировать в нужную кодировку, сохранить smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
artsb
Дата 4.1.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(JackYF @  4.1.2008,  00:34 Найти цитируемый пост)
Перекодировать в нужную кодировку, сохранить  smile 

Ну, до этого я сразу додумался.  smile 
Больше интересует: КАК это сделать (перекодировать)? Может есть какие-нибудь библиотеки или алгоритмы?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Fazil6
Дата 4.1.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  4.1.2008,  11:43 Найти цитируемый пост)
Больше интересует: КАК это сделать (перекодировать)? Может есть какие-нибудь библиотеки или алгоритмы?

библиотека iconv

Добавлено через 2 минуты и 44 секунды
конвертация
PM MAIL   Вверх
Crut
Дата 4.1.2008, 14:00 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 27.11.2007
Где: Воронеж

Репутация: нет
Всего: нет



Вот пример:
Код

typedef AnsiString as;
void code_line(as &g){
  for(int a=0; a < StrLen(g.c_str()); a++){
   ch_shd(g[a]);
 }
}

void ch_shd(char &a){
 char ret;
 switch(a){
 //русский
 //верх. строка
  case 'й': ret = 'q';break;
  case 'ц': ret = 'w';break;
  case 'у': ret = 'e';break;
  case 'к': ret = 'r';break;
  case 'е': ret = 't';break;
  case 'н': ret = 'y';break;
  case 'г': ret = 'u';break;
  case 'ш': ret = 'i';break;
  case 'щ': ret = 'o';break;
  case 'з': ret = 'p';break;
  case 'х': ret = '[';break;
  case 'ъ': ret = ']';break;
 //ср. строка
  case 'ф': ret = 'a';break;
  case 'ы': ret = 's';break;
  case 'в': ret = 'd';break;
  case 'а': ret = 'f';break;
  case 'п': ret = 'g';break;
  case 'р': ret = 'h';break;
  case 'о': ret = 'j';break;
  case 'л': ret = 'k';break;
  case 'д': ret = 'l';break;
  case 'ж': ret = ';';break;
  case 'э': ret = '\'';break;
  //нижн. строка
  case 'я': ret = 'z';break;
  case 'ч': ret = 'x';break;
  case 'с': ret = 'c';break;
  case 'м': ret = 'v';break;
  case 'и': ret = 'b';break;
  case 'т': ret = 'n';break;
  case 'ь': ret = 'm';break;
  case 'б': ret = ',';break;
  case 'ю': ret = '.';break;
  case '.': ret = '/';break;
  //английский
  //верх.строка
  case 'q': ret = 'й';break;
  case 'w': ret = 'ц';break;
  case 'e': ret = 'у';break;
  case 'r': ret = 'к';break;
  case 't': ret = 'е';break;
  case 'y': ret = 'н';break;
  case 'u': ret = 'г';break;
  case 'i': ret = 'ш';break;
  case 'o': ret = 'щ';break;
  case 'p': ret = 'з';break;
  case '[': ret = 'х';break;
  case ']': ret = 'ъ';break;
    //ср. строка
  case 'a': ret = 'ф';break;
  case 's': ret = 'ы';break;
  case 'd': ret = 'в';break;
  case 'f': ret = 'а';break;
  case 'g': ret = 'п';break;
  case 'h': ret = 'р';break;
  case 'j': ret = 'о';break;
  case 'k': ret = 'л';break;
  case 'l': ret = 'д';break;
  case ';': ret = 'ж';break;
  case '\'': ret = 'э';break;
      //нижн. строка
  case 'z': ret = 'я';break;
  case 'x': ret = 'ч';break;
  case 'c': ret = 'с';break;
  case 'v': ret = 'м';break;
  case 'b': ret = 'и';break;
  case 'n': ret = 'т';break;
  case 'm': ret = 'ь';break;
  case ',': ret = 'б';break;
  case '/': ret = '.';break;
  default: ret = a;
 }
 a = ret;
}

Но эта по клаве, а для стандартов -  смотри таблицу.
PM MAIL   Вверх
JackYF
Дата 4.1.2008, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Crut, ужас какой... перепиши хоть со строками, что ли.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Crut
Дата 4.1.2008, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 27.11.2007
Где: Воронеж

Репутация: нет
Всего: нет



??? 
PM MAIL   Вверх
JackYF
Дата 4.1.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(Crut @  4.1.2008,  14:00 Найти цитируемый пост)
case 'й': ret = 'q';break;
  case 'ц': ret = 'w';break;
  case 'у': ret = 'e';break;
  case 'к': ret = 'r';break;
  case 'е': ret = 't';break;
  case 'н': ret = 'y';break;
  case 'г': ret = 'u';break;
  case 'ш': ret = 'i';break;
  case 'щ': ret = 'o';break;
  case 'з': ret = 'p';break;
  case 'х': ret = '[';break;
  case 'ъ': ret = ']';break;
 //ср. строка
  case 'ф': ret = 'a';break;
  case 'ы': ret = 's';break;
  case 'в': ret = 'd';break;
  case 'а': ret = 'f';break;
  case 'п': ret = 'g';break;
  case 'р': ret = 'h';break;
  case 'о': ret = 'j';break;
  case 'л': ret = 'k';break;
  case 'д': ret = 'l';break;
  case 'ж': ret = ';';break;
  case 'э': ret = '\'';break;
  //нижн. строка
  case 'я': ret = 'z';break;
  case 'ч': ret = 'x';break;
  case 'с': ret = 'c';break;
  case 'м': ret = 'v';break;
  case 'и': ret = 'b';break;
  case 'т': ret = 'n';break;
  case 'ь': ret = 'm';break;
  case 'б': ret = ',';break;
  case 'ю': ret = '.';break;
  case '.': ret = '/';break;
  //английский
  //верх.строка
  case 'q': ret = 'й';break;
  case 'w': ret = 'ц';break;
  case 'e': ret = 'у';break;
  case 'r': ret = 'к';break;
  case 't': ret = 'е';break;
  case 'y': ret = 'н';break;
  case 'u': ret = 'г';break;
  case 'i': ret = 'ш';break;
  case 'o': ret = 'щ';break;
  case 'p': ret = 'з';break;
  case '[': ret = 'х';break;
  case ']': ret = 'ъ';break;
    //ср. строка
  case 'a': ret = 'ф';break;
  case 's': ret = 'ы';break;
  case 'd': ret = 'в';break;
  case 'f': ret = 'а';break;
  case 'g': ret = 'п';break;
  case 'h': ret = 'р';break;
  case 'j': ret = 'о';break;
  case 'k': ret = 'л';break;
  case 'l': ret = 'д';break;
  case ';': ret = 'ж';break;
  case '\'': ret = 'э';break;
      //нижн. строка
  case 'z': ret = 'я';break;
  case 'x': ret = 'ч';break;
  case 'c': ret = 'с';break;
  case 'v': ret = 'м';break;
  case 'b': ret = 'и';break;
  case 'n': ret = 'т';break;
  case 'm': ret = 'ь';break;
  case ',': ret = 'б';break;
  case '/': ret = '.';break;

не находишь, что этот код слишком избыточен и накосячить в нём - как пить дать?



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Crut
Дата 4.1.2008, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 27.11.2007
Где: Воронеж

Репутация: нет
Всего: нет



C коментами что-ли?
Код

typedef AnsiString as;    //ансистринг переминовываем
void code_line(as &g){ // функция конирующая целую строку ансистринга    
  for(int a=0; a < StrLen(g.c_str()); a++){    //тута всё ясно
   ch_shd(g[a]);    //кодируем
 }    
}    
void ch_shd(char &a){     // функция коодинга
 char ret;    //то, чё возратить
 switch(a){    //ветвление
 //русский    
 //верх. строка    
  case 'й': ret = 'q';break; //тута ясно    
  case 'ц': ret = 'w';break;    
  case 'у': ret = 'e';break;    
  case 'к': ret = 'r';break;    
  case 'е': ret = 't';break;    
  case 'н': ret = 'y';break;    
  case 'г': ret = 'u';break;    
  case 'ш': ret = 'i';break;    
  case 'щ': ret = 'o';break;    
  case 'з': ret = 'p';break;    
  case 'х': ret = '[';break;    
  case 'ъ': ret = ']';break;    
 //ср. строка    
  case 'ф': ret = 'a';break;    
  case 'ы': ret = 's';break;    
  case 'в': ret = 'd';break;    
  case 'а': ret = 'f';break;    
  case 'п': ret = 'g';break;    
  case 'р': ret = 'h';break;    
  case 'о': ret = 'j';break;    
  case 'л': ret = 'k';break;    
  case 'д': ret = 'l';break;    
  case 'ж': ret = ';';break;    
  case 'э': ret = '\'';break;    
  //нижн. строка    
  case 'я': ret = 'z';break;    
  case 'ч': ret = 'x';break;    
  case 'с': ret = 'c';break;    
  case 'м': ret = 'v';break;    
  case 'и': ret = 'b';break;    
  case 'т': ret = 'n';break;    
  case 'ь': ret = 'm';break;    
  case 'б': ret = ',';break;    
  case 'ю': ret = '.';break;    
  case '.': ret = '/';break;    
  //английский    
  //верх.строка    
  case 'q': ret = 'й';break;    
  case 'w': ret = 'ц';break;    
  case 'e': ret = 'у';break;    
  case 'r': ret = 'к';break;    
  case 't': ret = 'е';break;    
  case 'y': ret = 'н';break;    
  case 'u': ret = 'г';break;    
  case 'i': ret = 'ш';break;    
  case 'o': ret = 'щ';break;    
  case 'p': ret = 'з';break;    
  case '[': ret = 'х';break;    
  case ']': ret = 'ъ';break;    
    //ср. строка    
  case 'a': ret = 'ф';break;    
  case 's': ret = 'ы';break;    
  case 'd': ret = 'в';break;    
  case 'f': ret = 'а';break;    
  case 'g': ret = 'п';break;    
  case 'h': ret = 'р';break;    
  case 'j': ret = 'о';break;    
  case 'k': ret = 'л';break;    
  case 'l': ret = 'д';break;    
  case ';': ret = 'ж';break;    
  case '\'': ret = 'э';break;    
      //нижн. строка    
  case 'z': ret = 'я';break;    
  case 'x': ret = 'ч';break;    
  case 'c': ret = 'с';break;    
  case 'v': ret = 'м';break;    
  case 'b': ret = 'и';break;    
  case 'n': ret = 'т';break;    
  case 'm': ret = 'ь';break;    
  case ',': ret = 'б';break;    
  case '/': ret = '.';break;    
  default: ret = a; //если не подходит - копировать как есть    
 }    
 a = ret; //присваиваем
}

// эта по клаве, а так:
 void ch_shd(char &a){
 a = a + 1;
}
Код




Добавлено через 2 минуты и 49 секунд
извеняюсь, за вопрос - можем тормозит....

Добавлено через 3 минуты и 17 секунд
(модем)
PM MAIL   Вверх
JackYF
Дата 4.1.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 4
Всего: 162



Цитата(Crut @  4.1.2008,  14:53 Найти цитируемый пост)
C коментами что-ли?

причём тут комментарии? я говорю про то, что почему не юзается таблица перекодировки, а написано 60 строчек кода с захаркодеными символами?

Идём дальше. Представь, что тебе нужно будет сделать перекодировку в другую кодировку. Что ты будешь делать? Напишешь ещё 60 строчек кода? а если в 10 кодировок?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
artsb
Дата 4.1.2008, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Crut я имел в виду не то, что ты написал. Я имею ввиду: как сделать чтобы сохранять файлы в кодировках, как у блокнота.

Fazil6 можешь написать примерчик использования библиотеки?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
586
Дата 4.1.2008, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата(Crut @  4.1.2008,  14:53 Найти цитируемый пост)
void ch_shd(char &a){     // функция коодинга
 char ret;    //то, чё возратить
 switch(a){    //ветвление
 //русский    
 //верх. строка    
  case 'й': ret = 'q';break; //тута ясно    
  case 'ц': ret = 'w';break;    
  case 'у': ret = 'e';break;    
  case 'к': ret = 'r';break;    
........
  case ',': ret = 'б';break;    
  case '/': ret = '.';break;    
  default: ret = a; //если не подходит - копировать как есть    
 }    
 a = ret; //присваиваем

Вбей русскую раскладку в один массив, а английскую во второй (они должны быть одинаковой длины)  и кодируй.
PM   Вверх
Fazil6
Дата 4.1.2008, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  4.1.2008,  15:30 Найти цитируемый пост)
Fazil6 можешь написать примерчик использования библиотеки?

а я что написал? 
конвертация

PM MAIL   Вверх
artsb
Дата 4.1.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Fazil6, я просто не совсем понял приведённый тобой пример. Можешь как-то подробнее объяснить и на конкретном примере, плиз.
И ещё вопрос: где взять таблицы кодировок и как ими пользоваться?
Спасибо.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Fazil6
Дата 4.1.2008, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  4.1.2008,  18:39 Найти цитируемый пост)
Fazil6, я просто не совсем понял приведённый тобой пример. Можешь как-то подробнее объяснить и на конкретном примере, плиз.

пример конкретнейший. конкретней не придумаешь.
что непонятно?
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.