Обращаться как с UTF-8 строкой

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

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

Обращаться как с UTF-8 строкой

Сообщение hinst » 19.10.2013 14:51:41

Допустим, у меня есть функция, которая возвращает указатель на UTF-8 строку (это просто известно, к примеру).
Код: Выделить всё
  function GetString: Pointer;

Указатель на последовательность символов в памяти.
И есть функция, которая принимает UTF-8 строку, но тип переменной уже "стандартный": UTF8String
Код: Выделить всё
  procedure DoIt(const s: UTF8String);

Если я сделаю
Код: Выделить всё
  DoIt(PAnsiChar(GetString));

то произойдёт преобразование строки ANSI в UTF-8. А как сделать, чтобы содержимое памяти, на которое указывает указатель, интерпретировалось как строка UTF-8 без преобразования? наверное,
Код: Выделить всё
  DoIt(PUTF8Char(GetString));

подошло бы, но типа PUTF8Char не существует
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Обращаться как с UTF-8 строкой

Сообщение Mirage » 19.10.2013 18:29:36

DoIt(UTF8String(GetString^)) не работает?
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia

Re: Обращаться как с UTF-8 строкой

Сообщение Ism » 20.10.2013 17:03:49

Mirage писал(а):А как сделать, чтобы содержимое памяти, на которое указывает указатель, интерпретировалось как строка UTF-8 без преобразования? наверное,

Смысла в этом нет, для Lazarus все строки однобайтовая кодировка, когда нужно работать с UTF8 используются unicode функции которые работают с теми же ANSI, например UTF8Length
В новом fpc будет по другому, но в этом так

Добавлено спустя 6 минут 21 секунду:
Не по теме
Если работать в fpc, то лучше переводить в widestring , тогда fpc будет однозначно это воспринимать
http://wiki.freepascal.org/Widestrings
http://wiki.freepascal.org/FPC_Unicode_support
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08


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

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

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

Рейтинг@Mail.ru