Русификация консоли чисто английской Windows

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Александр Яшин
новенький
Сообщения: 67
Зарегистрирован: 21.11.2009 08:31:01

Русификация консоли чисто английской Windows

Сообщение Александр Яшин »

Есть Windows XP SP2 английская версия, не русифицированная.
Оператор

Код: Выделить всё

writeln(UTF8ToConcole('Привет, Мир'));

выдает символы подчеркивания вместо букв.
При вводе с клавиатуры русских букв

Код: Выделить всё

readln(str);
отображаются вопросительные знаки.
Как установить кодовую страницу СР866 на такую Windows?
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

в окне cmd.exe можно написать

Код: Выделить всё

chcp 866
Но даже если сработает, то вряд ли навсегда.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Александр Яшин писал(а):Есть Windows XP SP2 английская версия, не русифицированная.
Оператор

Код: Выделить всё

writeln(UTF8ToConcole('Привет, Мир'));

выдает символы подчеркивания вместо букв.


я так понимаю, что речь идёт о лазарусе?

Вариант 1: добавь в начало модуля такую запись:

Код: Выделить всё

{$codepage utf8}

должно помочь.

Вариант 2:
Просто поменяй кодировку файла (правой кнопкой в редакторе File Settings ... -> Encoding -> cp866)
после этого достаточно будет писать:

Код: Выделить всё

writeln('Привет, Мир');

как в старом добром TP.
v-t-l
энтузиаст
Сообщения: 744
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l »

скалогрыз писал(а):Вариант 1: добавь в начало модуля такую запись:

Код: Выделить всё
{$codepage utf8}


должно помочь.

Вариант 2:
Просто поменяй кодировку файла (правой кнопкой в редакторе File Settings ... -> Encoding -> cp866)
после этого достаточно будет писать:

Код: Выделить всё
writeln('Привет, Мир');

Ошибочка, должно быть:

Код: Выделить всё

{$codepage cp866}

Правда не уверен, что компилятор поймет :)
И так же не уверен, что консоль сумеет отобразить CP866 - в английской винде, я думаю, CP437 по-умолчанию.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

v-t-l писал(а):Ошибочка, должно быть:
...

Александр Яшин нас рассудит :D
Александр Яшин
новенький
Сообщения: 67
Зарегистрирован: 21.11.2009 08:31:01

Сообщение Александр Яшин »

Не помогло ни {$codepage utf8}, ни {$codepage СР866}
скалогрыз писал(а):Просто поменяй кодировку файла (правой кнопкой в редакторе File Settings ... -> Encoding -> cp866)

1. Выдало пустую строку
2. Вариант все равно неприемлем, т.к. программа должна работать без всяких изменений в Windows и Linux, т.е. должна быть кроссплатформенной.

Вычитал в другом форуме - в окне MSDOS программы надо нажать кнопку системного меню и в свойствах указать шрифт Lucida Console. После этого при вводе оператором readln() русские буквы стали появляться, но вывод writeln'ом по прежнему не получается.
скалогрыз
долгожитель
Сообщения: 1804
Зарегистрирован: 03.09.2008 02:36:48

Сообщение скалогрыз »

Александр Яшин писал(а):Не помогло ни {$codepage utf8}, ни {$codepage СР866}

только сейчас прочитал, что винда английская :D
тогда шаги для русской винды действительно не помут
Аватара пользователя
Astralis
новенький
Сообщения: 45
Зарегистрирован: 06.06.2007 20:33:05
Откуда: Tvercity-Annet
Контактная информация:

Сообщение Astralis »

1) попробоывать рааспечатать всю кодовую страницу (все chr(i), i=127..255). если русских символов нет, то уже ничего не поможет в программе. Если есть, то в delphi обычно использовалось writeln(AnsiToOem(....))
2) в первом этом случае поможет знаменитый файл keyrus кажется
Ответить