проблемы с кириллицей после трансляции проекта с дельфи

Форум для изучающих FPC и их учителей.

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

Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Мне очень стыдно, но я не понял что из этого следует в моем случае.

Что Вам нужно-то?
ya_vanka
новенький
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Сообщение ya_vanka »

Мне нужно, чтобы работала функция UTF8ToAnsi.


К вопросу о локали:

locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=ru_RU.UTF-8
LC_TIME=ru_RU.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=ru_RU.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=ru_RU.UTF-8
LC_NAME=ru_RU.UTF-8
LC_ADDRESS=ru_RU.UTF-8
LC_TELEPHONE=ru_RU.UTF-8
LC_MEASUREMENT=ru_RU.UTF-8
LC_IDENTIFICATION=ru_RU.UTF-8
LC_ALL=
Последний раз редактировалось ya_vanka 27.03.2014 18:33:51, всего редактировалось 1 раз.
Аватара пользователя
Дож
энтузиаст
Сообщения: 900
Зарегистрирован: 12.10.2008 16:14:47

Сообщение Дож »

Ну да, поэтому UTF8ToAnsi и переводит Вам строки в кодировку utf-8.
ya_vanka
новенький
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Сообщение ya_vanka »

A-a.
В общем путаница у меня в голове. Я почему-то думал, что функция UTF8ToAnsi преобразует строку из кодировки UTF8 в CP1251.

А есть такая функция?
ya_vanka
новенький
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Сообщение ya_vanka »

Спасибо за помощь!
Аватара пользователя
alexs
долгожитель
Сообщения: 4069
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

ya_vanka
Забудьте про обращение к строке как к массиву символов. По крайней мере это относится к AnsiString. Либо переходите на WideString либо использовать функции UTF8Pos, UTF8Copy и подобные.

Строки UTF8 должны обрабатываться как поток а не как массив. Т.е. вы должны запоминать позицию превыдущего обработанного символа и следующую итерацию начинать с неё. Иначе будет просадка по скорости.
xdsl
постоялец
Сообщения: 131
Зарегистрирован: 15.01.2009 12:49:03

Сообщение xdsl »

ya_vanka, в общем случае к widestring тоже бесполезно обращаться как к массиву символов. Во первых - суррогатные пары, во вторых - диакритические знаки. Плюс еще несколько фишек в стандарте юникода, которые, правда, мало кто реализовал.

Собственно, пишу потихоньку учебно-методическое пособие по Free Pascal, в третьей части которого подробно рассказывается об обработке строк. Почитайте, возможно поможет в понимании обработки юникода: https://shgpi.edu.ru/forum/viewtopic.php?t=1048
ya_vanka
новенький
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Сообщение ya_vanka »

Спасибо, почитаю.
Аватара пользователя
bormant
постоялец
Сообщения: 408
Зарегистрирован: 21.03.2012 11:26:01

Сообщение bormant »

xdsl,
по поводу 3-ей части есть такое замечание:
стр. 10
Этот набор символов описывается терминами "базовый план", Basic Multilingual Plane, BMP.

Произошла путаница с plan, перевод "plane" с английского -- плоскость, уровень. Вместо "базовый план" лучше использовать что-вроде "Базовый мультиязычный уровень", "основной мультиязычный уровень", или даже "набор".
xdsl
постоялец
Сообщения: 131
Зарегистрирован: 15.01.2009 12:49:03

Сообщение xdsl »

bormant
Логика в Ваших словах есть. Сейчас понимаю, что слово "план" может ввести в заблуждение читателей. Исправлю.
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

xdsl
еще есть замечания:
1. повсюду в тексте встречается раздельное написание "не смотря", хотя иногда оно ошибочно. Можно воспользоваться в качестве ориентира этой статьей

2. часть 3 стр 19
фраза "поэтому строках 1-3 производится подключение модуля cwstring в случае, если Windows не является целевой платформой" разве не вступает в противоречие с кодом ?

Код: Выделить всё

uses {$ IFENDEF WINDOWS} 
cwstring, {$ ENDIF} ...


зы. самый дельный мануал, который я читал. Респект автору. Жду продолжения. :)
xdsl
постоялец
Сообщения: 131
Зарегистрирован: 15.01.2009 12:49:03

Сообщение xdsl »

zoltanleo писал(а):xdsl
еще есть замечания:
1. повсюду в тексте встречается раздельное написание "не смотря", хотя иногда оно ошибочно. Можно воспользоваться в качестве ориентира этой статьей
Учту.
zoltanleo писал(а):2. часть 3 стр 19
фраза "поэтому строках 1-3 производится подключение модуля cwstring в случае, если Windows не является целевой платформой" разве не вступает в противоречие с кодом ?

Код: Выделить всё

uses {$ IFENDEF WINDOWS} 
cwstring, {$ ENDIF} ...
Не вступает. {$IFNDEF WINDOWS} переводится как "если не виндовс ..."
zoltanleo писал(а):зы. самый дельный мануал, который я читал. Респект автору. Жду продолжения. :)
Спасибо! Разгребусь с текучкой и продолжу в мае-июне.
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

xdsl писал(а):{$IFNDEF WINDOWS} переводится как "если не виндовс ..."


надо же, ни разу встречал. Буду знать ...
Ответить