var Iter : LongInt; Stop : LongInt; A : String; begin Stop := 1; For Iter := 1 To 10000 Do begin WriteLn (Iter, ' ', WideChar (Iter)); Inc (Stop); If Stop = 10 Then begin ReadLn; Stop := 1; End; End; End.
В линуксойдном lazarus (перенаправив вывод в Memo) он честно выводит все символы, а в FPC WriteLn правильно выводит только первые 128 символов, потом идут знаки вопроса в черном кружке, а с 256го символа идут просто символы знаков вопроса. В принципе, консоль линукса должна понимать UTF8, она ведь выводит текста написанные по русски в UTF8? Не пойму в чем дело.
Несколько месяцев назад у меня вроде получалось ввести на консоль символы вот таким вот образом.
К сведению - У меня консоль настроена на UTF8. И WriteLn понимает текст написанный UTF8.
fdima1979 писал(а):а в FPC WriteLn правильно выводит только первые 128 символов, потом идут знаки вопроса в черном кружке, а с 256го символа идут просто символы знаков вопроса
Writeln нормально выводит символы консоль. Дело в то что символы 128..255 в utf-8 записываются не одним а двумя-тремя символами и если процедуре writeln скормить массив таких символов то ты увидишь в консоли нужную тебе букву. Вот пример для кода в IBM 866 кодировки которая поддерживается пропатченным редактором fp
Несколько месяцев назад у меня вроде получалось ввести на консоль символы вот таким вот образом.
Тогда в коде и консоли были одинаковые кодировки. А если они разные, то текст запихиваемый во writeln нужно конвертировать в кодировку консоли, примерно как в примере выше. Очевидно что в твоём примере функция WideChar не справляется с конвертированием чисел >127 в массив символов.