Перекодировка русского текста из 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.
Рассмотрим код:
Инициализируем пустую строку EncodedText для хранения конвертированной текстовой строки.
Перебираем каждый символ ch в входной строке Text.
Получаем ASCII-код символа с помощью функции ord(ch).
Если ASCII-код больше 128 (т.е., неASCII-символ), выполняем следующие конверсии:
Если ASCII-код находится между 'А' и 'р' (включительно), вычитаем ASCII-код 'А' (97) и добавляем 128 для получения соответствующего кода CP-866.
Если ASCII-код больше или равен 'р', вычитаем ASCII-код 'р' (1119) и добавляем 224 для получения соответствующего кода CP-866.
Конвертируем модифицированный ASCII-код в символ с помощью функции chr(chCode) и конкатенируем его к EncodedText.
Возвращаем конвертированную строку EncodedText.
Некоторые предложения по улучшению:
Рассмотрите добавление обработки ошибок для недопустимых вводов (например, нестроковых вводов).
Вы можете использовать более компактный способ выполнения конверсий, например, с помощью таблицы соответствий или одиночной цикла с условными операторами.
Если вы планируете поддерживать другие языки помимо русского, вам может потребоваться использование более robust библиотеки для преобразования символов.
Вот обновленная версия кода, которая включает в себя эти предложения:
Обновленный код использует более компактный case оператор для выполнения конверсий и добавляет некоторые пробелы для улучшения читаемости.
Функция Win2Dos на языке Паскаль выполняет перекодировку русского текста из кодировки Windows в кодировку DOS.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.