Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: Ekz 
Форум » Все о Delphi » Синтаксис » Не совсем корректная перекодировка Win-1251/KOI8-R (Путаются буквы T и ё)
Не совсем корректная перекодировка Win-1251/KOI8-R
skycarДата: Суббота, 20.02.2010, 21:51 | Сообщение # 1
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
Всем привет! У меня такая проблема: надо перекодировать текст с сайта из Koi в Win. Я нашёл соответствующие функции

Code

const
   Koi: array[0..66] of Char = ('T', 'Ё', 'ё', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж',
     'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
     'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ',
     'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д',
     'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
     'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш',
     'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
   Win: array[0..66] of Char = ('ё', 'Ё', 'T', 'ю', 'а', 'б', 'ц', 'д', 'е', 'ф',
     'г', 'х', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',
     'я', 'р', 'с', 'т', 'у', 'ж', 'в', 'ь', 'ы', 'з',
     'ш', 'э', 'щ', 'ч', 'ъ', 'Ю', 'А', 'Б', 'Ц', 'Д',
     'Е', 'Ф', 'Г', 'Х', 'И', 'Й', 'К', 'Л', 'М', 'Н',
     'О', 'П', 'Я', 'Р', 'С', 'Т', 'У', 'Ж', 'В', 'Ь',
     'Ы', 'З', 'Ш', 'Э', 'Щ', 'Ч', 'Ъ');

function WinToKoi(Str: string): string;
var
   i, j, Index: Integer;
begin
   Result := '';

   for i := 1 to Length(Str) do
   begin
     Index := -1;
     for j := Low(Win) to High(Win) do
       if Win[j] = Str[i] then
       begin
         Index := j;
         Break;
       end;

     if Index = -1 then
       Result := Result + Str[i]
     else
       Result := Result + Koi[Index];
   end;
end;

function KoiToWin(Str: string): string;
var
   i, j, Index: Integer;
begin
   Result := '';

   for i := 1 to Length(Str) do
   begin
     Index := -1;
     for j := Low(Win) to High(Win) do
       if Koi[j] = Str[i] then
       begin
         Index := j;
         Break;
       end;

     if Index = -1 then
       Result := Result + Str[i]
     else
       Result := Result + Win[Index];
   end;
end;

Но когда перекодирую из Koi в Win, то путаются буквы T и ё... Как исправить это? Спасибо заранее

 
AdminДата: Воскресенье, 21.02.2010, 17:16 | Сообщение # 2
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
У меня ничего не путается. Код ваш.
Перекодировал сначала из win в koi потом обратно. Получил тоже самое. Весь алфавит попробовал.
Хотя если кодировать "T" (EN) в KOI получается русская "ё". Но обратно все нормально.


Не оказываю помощь через личные сообщения и ICQ
 
Форум » Все о Delphi » Синтаксис » Не совсем корректная перекодировка Win-1251/KOI8-R (Путаются буквы T и ё)
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz