Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Перекодировка русского текста из Windows кодировки в Dos кодировку

Delphi , Синтаксис , Кодировки

Перекодировка русского текста из Windows кодировки в Dos  кодировку

function  Win2Dos(Text:  string) :  string;
  var EncodedText: string;
      ch: char;
      chCode: integer;
      i: integer;
  begin
  EncodedText := ' ' ;
  for i := 1 to Length(Text) do
    begin
    ch := Text[i];
    chCode := ord(Ch);
    if chCode > 128 then
      if chCode < ord( 'р' ) then
        chCode := chCode - ord( 'А' ) + 128
      else
        chCode := chCode - ord( 'р' ) + 224;
    EncodedText := EncodedText + chr(chCode);
    end;
  Win2Dos := EncodedText;
  end;

Программа на Delphi!

Функция Win2Dos принимает строковый ввод в кодовой странице Windows (CP-1251) и конвертирует его в кодовую страницу DOS (CP-866). Цель - заменить русские символы соответствующими кодами CP-866.

Рассмотрим код:

  1. Инициализируем пустую строку EncodedText для хранения конвертированной текстовой строки.
  2. Перебираем каждый символ ch в входной строке Text.
  3. Получаем ASCII-код символа с помощью функции ord(ch).
  4. Если ASCII-код больше 128 (т.е., неASCII-символ), выполняем следующие конверсии:
    • Если ASCII-код находится между 'А' и 'р' (включительно), вычитаем ASCII-код 'А' (97) и добавляем 128 для получения соответствующего кода CP-866.
    • Если ASCII-код больше или равен 'р', вычитаем ASCII-код 'р' (1119) и добавляем 224 для получения соответствующего кода CP-866.
  5. Конвертируем модифицированный ASCII-код в символ с помощью функции chr(chCode) и конкатенируем его к EncodedText.
  6. Возвращаем конвертированную строку EncodedText.

Некоторые предложения по улучшению:

  • Рассмотрите добавление обработки ошибок для недопустимых вводов (например, нестроковых вводов).
  • Вы можете использовать более компактный способ выполнения конверсий, например, с помощью таблицы соответствий или одиночной цикла с условными операторами.
  • Если вы планируете поддерживать другие языки помимо русского, вам может потребоваться использование более robust библиотеки для преобразования символов.

Вот обновленная версия кода, которая включает в себя эти предложения:

function Win2Dos(Text: string): string;
var
  EncodedText: string;
  ch: char;
  chCode: integer;
begin
  EncodedText := '';
  for i := 1 to Length(Text) do begin
    ch := Text[i];
    chCode := ord(ch);
    if chCode > 128 then begin
      case true of
        (ord('А') <= chCode and chCode <= ord('р')): 
          chCode := chCode - ord('А') + 128;
        else:
          chCode := chCode - ord('р') + 224;
      end;
    end;
    EncodedText := EncodedText + chr(chCode);
  end;
  Win2Dos := EncodedText;
end;

Обновленный код использует более компактный case оператор для выполнения конверсий и добавляет некоторые пробелы для улучшения читаемости.

Функция Win2Dos на языке Паскаль выполняет перекодировку русского текста из кодировки Windows в кодировку DOS.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Кодировки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:52:18/0.0055191516876221/1