Как получить зонтик в консоли

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

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

Как получить зонтик в консоли

Сообщение beria » 17.01.2017 01:30:52

Итак сделал тут процедуру перекодировки строк с раскодировавшем т.н. спецсимволов HTML по их мнемоническому имени и коду и в общем случае разных иероглифов
Как выход - тип WideString ибо многие символы присутствуют только в UTF-16
Теперь вопрос, а как их увидеть в консоли, хотя там вроде поставил шрифт семейства ДежаВю которым , по крайней мере в LibreOffice все отображается
Сразу компилятор стал ругаться для для WideString не определены функции типа TryStrToInt
И так результат тестовый лог вида на ввод спецсимвола с зонтиком.( у меня в браузере от отображается- "☂") При этом с двухбайтовые символы выводятся нормально.

Код: Выделить всё
ввод строки ANSI
☂
4
1
?
?
9730


Исходный листинг
Код: Выделить всё
program project1;

{$mode objfpc}{$H+}

uses {$IFDEF UNIX} {$IFDEF UseCThreads}
  cthreads, {$ENDIF} {$ENDIF}
  Classes,
  HTMLDecode
var
  HTMLDec: THTMLDecode;
  s1,s2: WideString;
  c: widechar;
  i: integer;
begin
  Writeln('ввод строки ANSI');
  readln(s1);
  s2 := HTMLDec.Decode(s1);
  for i := 1 to length(s2) do
  begin
    c := s2[i];
    writeln(sizeof(s2));
    writeln(length(s2));
    writeln(s2);
    Writeln(c);
    Write(integer(c));
    writeln(' ');
  end;
  readln;
end.
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Как получить зонтик в консоли

Сообщение скалогрыз » 17.01.2017 07:11:23

ну у меня вот так получилось.

Обрати внимание, что консоли задана кодировка вывода: SetConsoleOutputCP(CP_UTF8)
Код: Выделить всё
program project1;

{$mode objfpc}{$H+}
{$codepage utf8}

uses
  Classes, Windows;

var
  ws: WideString;
begin
  SetConsoleOutputCP(CP_UTF8);
  ws:='¯\_(ツ)_/¯';
  writeln(ws);
end.

(а ещё в консоли пришлось поменять шрифт, чтобы смайл отрисовался правильно... так что если увидишь белые квадратики, знай - у тебя просто нехватает шрифта)
console_unicode.png


А вот и зонтик! (шрифты, верхняя консоль NSimSun, нижняя консоль MS Gothic. Шли вместе с десяткой, дополнительно не ставил. Ни Lucida Console, ни Courier New с задачей по отображению зонитка не справились)
console_unicode2.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Как получить зонтик в консоли

Сообщение beria » 17.01.2017 22:06:31

ой, не так все просто в win10 x64
http://prnt.sc/dwuzuh
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13

Re: Как получить зонтик в консоли

Сообщение скалогрыз » 17.01.2017 22:14:27

версия компиляторя?
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Как получить зонтик в консоли

Сообщение beria » 17.01.2017 22:27:48

скалогрыз писал(а):версия компиляторя?

Изображение
Думаете в этом проблема? В багтрекере не было ничего.
Аватара пользователя
beria
постоялец
 
Сообщения: 130
Зарегистрирован: 29.09.2016 08:57:13


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23

Рейтинг@Mail.ru