MVV

|
Posted: Mon Jun 07, 2010 17:07 Post subject: |
|
|
Самый быстрый способ перекодировки - составить таблицу, где на позиции, соответствующей индексу (коду за вычетом 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… |
|