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

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

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

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

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

Сообщение Иван Шихалев »

Что-то и я запутался с кодировками: есть исходник в 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. Если использовать директиву компилятора — тоже все в вопросиках.
Аватара пользователя
hinst
энтузиаст
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Сообщение hinst »

проверьте ещё раз, ваш исходник точно в UTF-8 ? а то у некоторых текстовых редакторов бывают проблемы с пониманием того, что от них хотят, чтобы они сохранили текст в определённой кодировке
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

Точно.

Добавлено спустя 40 секунд:
И еще — консоль тоже utf-8. Linux.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Внесу свою лепту. Есть непонятны проблемы с UTF-8 BOM.
Аватара пользователя
Иван Шихалев
энтузиаст
Сообщения: 1138
Зарегистрирован: 15.05.2006 11:26:13
Откуда: Екатеринбург
Контактная информация:

Сообщение Иван Шихалев »

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

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

А в чем они заключаются?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Проявляется похожая ситуация если исходник модуля с BOM маркером.
Хотя в редакторе кода (Lazarus) кодировка определяется автоматически правильно.
fpc 2.4.2 Lazarus 0.9.29 rev 25451
Kon.pasc
новенький
Сообщения: 26
Зарегистрирован: 31.10.2009 16:45:38

Сообщение Kon.pasc »

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


Подтверждаю. Сегодня двадцать минут промучался непонимая как так русские строки в программе стали вопросиками. Угораздило поменять формат исходника с UTF8 на UTF8+BOM.
Ответить