[solved] Толи лыжи не едут... {$CODEPAGE UTF8}

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

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

[solved] Толи лыжи не едут... {$CODEPAGE UTF8}

Сообщение Иван Шихалев » 01.12.2010 23:40:57

Что-то и я запутался с кодировками: есть исходник в UTF-8
Код: Выделить всё
{$mode objfpc}{$h+}

program TestUTF;

var
  a : ansistring;
  f : utf8string;
  w : widestring;
  u : unicodestring;

begin
WriteLn('Текст');
a := 'Другой';
WriteLn(a);
f := 'Третий';
WriteLn(f);
w := 'Снова';
WriteLn(w);
u := 'И ещё';
WriteLn(u);
end.

Компилирую
Код: Выделить всё
fpc testutf.pp

запускаю, все ок:
Код: Выделить всё
Текст
Другой
Третий
Снова
И ещё

Компилирую с указанием кодировки исходника:
Код: Выделить всё
fpc -FcUTF8 testutf.pp

Запускаю и получаю вопросики:
Код: Выделить всё
?????
??????
??????
?????
? ???


Где собака порылась?

Добавлено спустя 1 минуту 7 секунд:
PS. Если использовать директиву компилятора — тоже все в вопросиках.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Толи лыжи не едут... {$CODEPAGE UTF8}

Сообщение hinst » 01.12.2010 23:57:06

проверьте ещё раз, ваш исходник точно в UTF-8 ? а то у некоторых текстовых редакторов бывают проблемы с пониманием того, что от них хотят, чтобы они сохранили текст в определённой кодировке
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Толи лыжи не едут... {$CODEPAGE UTF8}

Сообщение Иван Шихалев » 02.12.2010 00:12:23

Точно.

Добавлено спустя 40 секунд:
И еще — консоль тоже utf-8. Linux.
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: Толи лыжи не едут... {$CODEPAGE UTF8}

Сообщение Mr.Smart » 02.12.2010 00:21:07

Внесу свою лепту. Есть непонятны проблемы с UTF-8 BOM.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Толи лыжи не едут... {$CODEPAGE UTF8}

Сообщение Иван Шихалев » 02.12.2010 00:48:10

Разобрался: нужен корректный WideStringManager. В моем случае — следует подключать модуль CWString. И да, таки указывать кодировку. В противном случае получается неправильное представление UnicodeString, которое преобразуется в ANSI всего лишь отрубанием старшего байта, и минус на минус дает плюс...

Добавлено спустя 3 минуты 50 секунд:
Re: [solved] Толи лыжи не едут... {$CODEPAGE UTF8}
Mr.Smart писал(а):Есть непонятны проблемы с UTF-8 BOM.

А в чем они заключаются?
Аватара пользователя
Иван Шихалев
энтузиаст
 
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург

Re: [solved] Толи лыжи не едут... {$CODEPAGE UTF8}

Сообщение Mr.Smart » 02.12.2010 13:04:20

Проявляется похожая ситуация если исходник модуля с BOM маркером.
Хотя в редакторе кода (Lazarus) кодировка определяется автоматически правильно.
fpc 2.4.2 Lazarus 0.9.29 rev 25451
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: [solved] Толи лыжи не едут... {$CODEPAGE UTF8}

Сообщение Kon.pasc » 06.12.2010 17:53:14

если исходник модуля с BOM маркером


Подтверждаю. Сегодня двадцать минут промучался непонимая как так русские строки в программе стали вопросиками. Угораздило поменять формат исходника с UTF8 на UTF8+BOM.
Kon.pasc
новенький
 
Сообщения: 26
Зарегистрирован: 31.10.2009 17:45:38


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

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

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

Рейтинг@Mail.ru