Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Отправка файла по почте с записью комментария в буфер 
Author Message
MVV



PostPosted: Mon Jun 07, 2010 17:07    Post subject: Reply with quote

Самый быстрый способ перекодировки - составить таблицу, где на позиции, соответствующей индексу (коду за вычетом 128) исходного символа будет стоять символ, на который его нужно заменить. Тогда отпадет необходимость в поиске символа в строке, а также в конкатенации строк, нужно будет лишь один раз пройтись по строке и исправить каждый ее символ на символ, указанный в массиве (если скрипт позволяет модифицировать строки). А таблица будет всего на 128 элементов, и строить ее проще простого - пишем в бинарник коды от 128 до 255 и перекодируем в любом редакторе файл из 866 в 1251 - таблица готова!
Code:
АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп---¦+¦¦¬¬¦¦¬---¬L+T+-+¦¦Lг¦T¦=+¦¦TTLL-г++----¦¦-рстуфхцчшщъыьэюяЁёЄєЇїЎў°•·v№¤¦ 
(таблица для перекодировки 866->1251, перекодировано в EmEditor; один символ форум передал неверно - неразрывный пробел)
Code:
??'?":ЕШ?%?<?????''""--?T?>????яцч?э?ірcт<ї-Rфш+???зъсьу>???хЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬-®Їабвгдежзийклмноп
(таблица для перекодировки 1251->866, перекодировано в EmEditor; три символа форум передал неверно - для букв Ш, а, н)

Таким образом, для каждого символа s[i] исходной строки новый символ равен table[код(s[i])-128] (или самому себе, если s[i]<128) - небольшой циклик. А таблицу перекодировки лучше передавать в функцию как параметр.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
View user's profile Send private message ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group