Кодировка windows 1251 dos

Готовый модуль для конвертирования текстовых строк из DOS кодировки в Windows и обратно

Может кому пригодится.

Enjoy

Преобразование текстовых файлов из кодировки DOS в кодировку Windows и обратно
Программа преобразования текстовых файлов из кодировки DOS в кодировку Windows и обратно.

Преобразование текстовых файлов из кодировки DOS в кодировку Windows и обратно (tasm)
Преобразование текстовых файлов из кодировки DOS в кодировку Windows и обратно по теме.

Перевод из кодировки Dos в Windows и обратно
Доброго времени суток. У меня такая проблема, как написать программу которая бы переводила текст из.

В чём отличия кодировки ms dos от кодировки ms windows?
Всем привет, подскажите в чём отличия кодировки ms dos от кодировки ms windows?

В Турбо Паскале все сплошь на WinAPI пишут.

Добавлено через 2 часа 9 минут 22 секунды

При чем тут столбец Hex ?
Я имею в виду, что код написанный polivets не оптимален.
1) Быстрее было бы использовать перекодировку по таблице.
Точнее две таблицы — туда и обратно.
2) Вообще нет смысла это делать, так как в WinAPI наверняка уже есть такая функция.
Зачем изобретать велосипед ?

Так понятнее или еще подробнее разъяснить ?

Модуль предназначен для TP, как мы уже выяснили, там нет WinAPI.

Я согласен, что использование XLAT-таблиц намного ускорит перекодирование большого текста, но у нас всего лишь тип String (255 символов). Да и сама откомпилированная программа на TP выполняется под Windows в 16 битной подсистеме, что такие тормаза, что никакой неоптимизированный алг не затмит.

Изобретать велосипед — это обычный довод, чтобы ничего не делать! А может кому-то будет интересно, как сделать свой кодировщик. Это всего лишь наработка — если она Вам не нравиться — никто не заставляет ее использовать.

Перекодировка из OEM-866 в Windows-1251

dp0\log.txt 2>>&1
понятно после завершения батника в этом логе досовские крокозябры
поэтому в конце батника пишу перекодировку этого лога так:

он создает этот второй лог но записывает туда только одну первую строку
как заставить его дочитать до конца, поигралась с параметром delims тоже не получилось

Добавлено через 14 минут
ответ нашла сама, как обычно

delims=-1 или delims=0 — это символы, обозначающие конец документа

только вот батник у меня большой, лог большой, приходится еще минут 10 ждать когда он перекодит, может есть у кого мысли как заставить его перекодировать сразу из потока вывода результов и записать уже в log.txt в кодировке chcp 1251 что-то вместо этого 1>>%

Вывод текста в кодировке Win-1251 из bat-файла, текст которого в кодировке OEM-866
примем за аксиому утверждение: «bat-скрипт следует создавать в кодировке DOS (OEM-866)» . пусть.

Перекодировка текста из OEM 866 в UTF-8 или Ansi с загрузкой в Memo
Всем привет! Помогите пожалуйста. У меня в исходниках есть текстовые файлы в кодировке OEM 866.

866-MS-DOS to 1251-MS-Windows
«Программа предназначена для перекодировки текстовых файлов из формата кодовой таблицы 866-MS-DOS в.

Читайте также:  Часовой пояс windows gpo

Перекодировка из КОИ-8 в Windows 1251
Разработать программу перекодировки текстовых файлов из кодового набора КОИ-8 в кодовый набор.

Вы неверно толкуете. Каждый символ после = является самостоятельным. Так нельзя писать.

Там по ссылке Charles Kludge, в п.3. при желании есть ускоренный аналог Вашего варианта перекодировщика.

Учтите, что строки, которые начинаются со знака ; будут пропускаться.
Для этого нужно добавить пустой модификатор eol=

Добавлено через 8 часов 56 минут
Или так:

Из «неправильной» переменной в файл
@echo off
set text=╧ЁштхЄ шч Ёы√ър.
(
for /f «tokens=* delims= » %%a in («%text%») do call :convert %%a
)>»%USERPROFILE%\Desktop\Translation.txt»
pause
goto :eof
:convert
::chcp 866>nul
set /p=%* nul
goto :eof

Добавлено через 3 минуты
Наверное, это тот случай когда нужно выкладывать более полный код. Сам батник изначально в кодировке 866
======================================================
:: Оставь эту строку, как распознаватель для открытия файла в редакторах
chcp 866
@echo off
set text=╧ЁштхЄ шч Ёы√ър.
(
for /f «tokens=* delims= » %%a in («%text%») do call :convert %%a
)>»%USERPROFILE%\Desktop\Translation.txt»
pause
goto :eof
:convert
::chcp 866>nul
set /p=%* nul
goto :eof

Добавлено через 3 часа 11 минут
Что то в моём более раннем ответе, на деле не то оказалось. Не знаю, как удалить предыдущее.
Вот это работает. Выводит текст ╧ЁштхЄ шч Ёы√ър. , в кодировке 1251, который так отображается в батнике, настроенном на кодировку 866, в тектовый файл 866.txt , в кодировке 1251.
В текстовом файле уже будет русский текст, разумеется.

Русский текст в консоли

мы получим «абракадабру»:

Почему так происходит?
Консоль работает в кодировке DOS (codepage 866).
Блокнот Windows создает пакетный файл в кодировке WIN (codepage 1251).

Поэтому, когда Вы запускаете файл, консоль отображает его в своей (DOS) кодировке.

1 способ (сохранение файла в кодировке OEM-866):
Скачаем текстовый редактор, поддерживающий сохранение текста в кодировке OEM-866 (DOS) :

Чтобы создать новый файл в кодировке DOS:
Меню «Файл» -> «Сохранить как. » -> из выпадающего списка выбрать «Кодировка OEM-866«.
Файл должен иметь расширение bat или cmd.

Для себя я настроил AkelPad так, чтобы он всегда сохранял в кодировке OEM-866 (Настройки -> Параметры -> Кодировка по-умолчанию -> OEM-866.)

Скачать.
Сам пользуюсь вот такой модификацией что и Вам советую. Скачать.
Или качаем с официального сайта.

Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей :
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню «Кодировки» -> выбрать «Сохранить в DOS-866«.
4) Вставить код.
5) Сохранить, запустить.

Полезные горячие комбинации клавиш:
Запуск скрипта (Ctrl + F5)
На весь экран (F11)
Сохранить (Ctrl + S)
Открыть в кодировке WIN (Alt + W)
Открыть в кодировке DOS (Alt + D)

Чтобы создать новый файл в кодировке DOS:
Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
«Файл» -> «Сохранить как. » -> пишем имя файла и расширение bat или cmd -> Сохранить.

Чтобы правильно сконвертировать уже имеющийся в редакторе код с кириллицей :
Войти в редактор.
1) Ctrl+A, скопировать код.
2) Удалить код.
3) Меню «Кодировки» -> «Кодировки» -> «Кириллица» -> «OEM-866»
4) Вставить код.
5) Сохранить, запустить.

Читайте также:  Ошибка превышение времени ожидания windows

Помните: в редакторе не должно быть видно «крякозябер», иначе это значит: Вы неправильно скопировали код.
В Windows Vista, 7 часто бывает, что код с форума «портиться» в буфере. Выход: когда копируете код, убедитесь, что включена русская раскладка клавиш.

2 способ (смена кодовой страницы):
Сменить кодовую страницу консоли.

А именно, в начале пакетного файла написать:

Преобразовать текст из кодировки Win1251 в DOS-866

С помощью этого кода приложение на этапе создания формы, в данном случае, что очевидно, создает bat файл и записывает в него следующие строки:

Перекодировать введенный текст из кодировки cp866 в win1251
Как перекодировать введенный текст из кодировки cp866 в win1251? Какие функции есть? Мои идея.

Кодировки win1251-UTF8
Подскажите как осуществить сиё действие? К примеру имею $mytext=’Яндекс ‘; //Яндекс зы.

Перевод кодировки в Win1251/UTF8
Вместо русского «Яндекс» пишутся такие кракозябры «Ð¯Ð½Ð´ÐµÐºÑ» как поменять.

Насколько же все это проще в Паскале, где нет ничего кроме своего мозга

В результате Еррор: incompatible types: ‘String’ and ‘PAnsiChar’
Что я делаю не так?

Добавлено через 57 минут
Я также пробовал играть преобразованием переменных, сводить их к одному виду и тогда сообщение Not enough actual parameters. То есть я не могу победить. Спасите, помогите.

данная функция отрабатывает, но возвращает неверный результат: К примеру запись WinToDos(‘»Э»‘) вернет «ж» в кодировке OEM866

Я уже замучался гуглить, если честно, чтобы решить такую банальную проблему, превратить русский текст из Delphi 2010 в русский текст в кодировке OEM866

makc9I, начиная с Delphi 2009 проблема перевода кодировок решается вот так:

функция отработала, но теперь получаю null на выходе при попытке перевести любой символ, если просматривать в notepad++

Добавлено через 5 минут
UI, спасибо, буду пробовать ваш метод, если другого решения не найду.
Просто я уже написал код со старым добрым AssignFile, writeln, присвоил куче переменных данные, предварительно их обработав функцией перевода(неработающей) в кодировку OEM866, гораздо проще было бы найти рабочую функцию, конечно. Но если не найду, буду переписывать код, что ж делать.

Добавлено через 12 минут

Это тебе не Паскаль.

Добрый день, может я не внимательно прочитал или не так понял. Вы хотите чтобы код в созданном Бат файле работал в с директориями, в которых встречаются русские символы?

К примеру при выполнении батника:

del C:\folder\project\project1.exe — работает

del C:\folder\Мои программы\project1.exe — НЕ работает

я правильно понял?

потом еще дополнительно прогонял через StrOemToAnsi
Но закоментировав все эти действия, пришел к выводу, что это все уже и не нужно, в файл все стало писаться как надо.

Добавлено через 43 минуты
поторопился я с выводами, не в тот файл посмотрел, все же надо проделать все процедуры, описанные выше. Но результата добился, спасибо

Да — Query.FieldByName(‘C’).AsAnsiString вернёт данные из DBF «как есть» — т. е., это будут строки однобайтных символов в кодировке CP866. Чтобы получить Windows ANSI кодировку (ANSI RU — CP1251), надо выполнить преобразование CP866 -> CP1251 через StrOemToAnsi(), например.
Кстати, при показе данных через DBGrid, кодировки автоматически преобразуются и в DBGrid тексты верно показываются. Но если строки читаются из набора данных через свойство AsAnsiString — то мы уже получаем данные, как уже говорилось, в том виде, в каком они присутствуют в БД.

Читайте также:  Окно log on windows

Добавлено через 1 час 40 минут

Ralik,
Преобразование из одного кода в другой элементарно сделать и самому.
Для этого зайдите в википедею и выдерите таблицу с кодировками.
На основе этого составьте массив. В нём всего то 256 элементов.
Индекс массива — код в Win1251 содержимое — код DOS-866

А далее дело техники Пишем элементарную функцию
Предположим у вас массив Сod

И. читаем символ из строки SS

Вот и всё. В одну строчку
Сделайте массив двухмерным и добавьте коды Win1251 где индексы — код DOS-866 И вы сможете делать обратное преобразование.
Можете даже написать функцию и при этом сократить массив. учитывая что вся котовасия начинается после индекса 127
Если больше 127 то делаем преобразование, иначе игнорируем.

Вот так — одна — три строчки кода и всё преобразование.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Изменение кодировки Win1251 в UTF8 (необычный случай)
Всем привет! . обычно кодировка проблем не доставляла, а вот недавно столкнулся с проблемой.

DOS-866 в Unicode (UTF-8)
Замаялся с кодировками. в файле данные в Unicode (UTF-8) у меня в консольнмо приложении в DOS-866.

866-MS-DOS to 1251-MS-Windows
«Программа предназначена для перекодировки текстовых файлов из формата кодовой таблицы 866-MS-DOS в.

В чём отличия кодировки ms dos от кодировки ms windows?
Всем привет, подскажите в чём отличия кодировки ms dos от кодировки ms windows?

Проблема с текстовым файлом (DOS 866)
Я собираю строку текстового файла и формирую ее согласно ниже приведенной декларации. .

Драйвер перекодировки символов в тексте таблицы win-1251 в dos-866
Вот есть тз : Legasy драйвер для ОС win NT. входной и выходной текст передается х драйвера с.

Настройка кодировки шрифтов в cmd/bat (иероглифы, кракозябры)

В некоторых случаях, когда используется неверная кодировка, могут возникать так называемые кракозябры или иероглифы, т.е. не читаемые символы, которые невозможно разобрать при работе с командной строкой. Эти проблемы могут также возникать и при запуске различных BAT-файлов. В данной статье мы расскажем о том, как можно сменить шрифт или кодировку, чтобы избавиться от этой проблемы. Пример таких не читаемых символов можно видеть на картинке ниже:

Исправляем проблему с кодировкой с помощью смены шрифта

Первым делом нужно зайти в свойства окна: Правой кнопкой щелкнуть по верхней части окна -> Свойства -> в открывшемся окне в поле Шрифт выбрать Lucida Console и нажать кнопку ОК.
После этого не читаемые символы должны исчезнуть, а текст должен выводиться на русском языке.

Исправляем проблему с кодировкой с помощью смены кодировки

Вместо смены шрифта, можно сменить кодировку, которая используется при работе cmd.exe.
Узнать текущую кодировку можно введя в командной строке команду chcp , после ввода данной команды необходимо нажать Enter .

Как видно на скриншоте, текущая используемая кодировка Windows-1251
Для изменения кодировки нам необходимо воспользоваться командой chcp , где — это сам код кодировки, на которую мы хотим переключиться. Возможные значения:

  • 1251 — Windows-кодировка (Кириллица);
  • 866 — DOS-кодировка;
  • 65001 — Кодировка UTF-8;

Т.е. для смены кодировки на DOS, команда примет следующий вид:

Для смены кодировки на UTF-8, команда примет следующий вид:

Для смены кодировки на Windows-1251, команда примет следующий вид:

Оцените статью