дискусия о WideString

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

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

Сообщение debi12345 » 20.05.2007 02:28:53

Э, нет, у Вас какие-то неправильные сведения. utf-8 - совершенно полнофункциональный Юникод. Все, что можно представить в виде WideString, можно взаимно-однозначно представить и в виде utf-8.
============
Извиняюсь за невнятную писанину - конечно, я имел ввиду данные ограничения именно для Ansi ( 1-байтных кодировок ).

Кстати, WideString в том виде, как она есть сейчас, не позволяет работать с кодами > $FFFF. Я, правда, даже не знаю, что за языки используют такие коды.
============
Китайский, ясно дело. И, похоже, китайцы за бортом останутся, или придется ограничиться упрощенными вариатами алфавита (что и так имеет место ).
Тут в чем прикол - что тогда сразу придется обрабатывать все десятки тысят китайских иероглифов. "Обрабатывать" - значит писать перегруженные строковые операторы, строковые процедуры,... Чего только конверсия UTF8<->UTF(>2) стоит - только представьте размер и тормознутость этой процедуры конверсии ! Кончен, разумнее остановиться именно на упрощенном алфавите, которому двух байт вполне хватает.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение debi12345 » 20.05.2007 02:38:20

с 2.1.1 - там глючило по-другому, потом его тоже пофиксили, я оставил себе эти два компилятора, потому что задолбался их пересобирать. Но ни одним из них рабочая MSEIde программа не собирается...
===============
С 2.0.5 ( SVN )- все отлично.
Кстати, в MSEgui SVN есть патч для FPС - но WideString там фиксится для Linux, да и то для редчайшего случая.
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Sergei I. Gorelkin » 20.05.2007 03:34:54

debi12345 писал(а):Чего только конверсия UTF8<->UTF(>2) стоит - только представьте размер и тормознутость этой процедуры конверсии ! Кончен, разумнее остановиться именно на упрощенном алфавите, которому двух байт вполне хватает.


Да нормально все с конверсией... 40 строк кода вместе с буферизацией и обработкой концов строк (файл packages/fcl-xml/src/xmlwrite.pp, процедура TXMLWriter.wrtChars). Оно почти в том же виде присутствует и в RTL (utf8decode/utf8encode), но без поддержки суррогатных пар. Надо бы собраться и ее туда в конце концов добавить...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Attid » 21.05.2007 14:38:54

как то не правельно отрезал переношу как могу =)
Иван Шихалев
Относительно кодовых страниц для Wide — я ж писал в статье… Не думаю, что в компилятор стоит добавлять непосредственную поддержку кучи кириллицы и других кодировок — их же до лешего.

shade

Иван Шихалев писал(а):Не думаю, что в компилятор стоит добавлять непосредственную поддержку кучи кириллицы и других кодировок — их же до лешего.

Мое мнение не так однозначно.
С одной стороны я согласен, что встраивать все кодировки в компилятор не стоит.
С другой стороны, я считаю, что поддержка кодировок должна быть либо более широкой, либо.. её вообще не должно быть.
Как мне кажется что нет большой необходимости определять строковые константы (не только WideString) используя национальный алфавит - хотя для маленьких учебных задач и примеров будет полезно. Тут скорее нужно использовать модули для интернационализации типа gettext, а особых случаях можно обойтись UTF-8...
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Китайский непричем

Сообщение Mirror » 22.05.2007 08:24:08

Большинство китайских иероглифов имеют код меньше, чем $FFFF (хотя часть редкоиспользуемых и там есть, в моем gcharmap те, что дальше, отмечены как "Расширение B"; на практике, они действительно редкоиспользуются, у меня ни в одном шрифте их нет...).
Mirror
новенький
 
Сообщения: 49
Зарегистрирован: 22.05.2005 12:02:48
Откуда: Порту

Сообщение shade » 23.05.2007 11:29:24

Florian Klaempfl добавил поддержку кириллицы не посредственно в компилятор: cp1251, cp866 и неизвестно кому нужная cp8859_5, а koi8-r видимо не углядел. Зато, кроме это он добавил опцию компилятора -Fm<codepage> для загрузки из файла <codepage>.txt. Файл должен находиться с исходниками (по опыту, по fpc -h: -Fm<x> load unicode conversion table from <x>.txt in the compiler dir)

Файлы с описанием кодовых таблиц можно найти на официальном сайте Unicode:
http://www.unicode.org/Public/MAPPINGS/
В частности KOI8-R: http://www.unicode.org/Public/MAPPINGS/ ... KOI8-R.TXT
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Иван Шихалев » 25.05.2007 09:15:51

опцию компилятора -Fm<codepage> для загрузки из файла

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

Сообщение shade » 25.05.2007 11:16:44

Иван Шихалев
Я предположил в -Fm указывать путь к папке с таблицами кодировок и даже патч приложил. Если останется все как есть, то для реального использования этой фишки прийдется прописывать все нужные кодировки в конфиг файле, а так можно было бы создать каталог, прописать его в конфиге, а потом просто закидывать нужные таблицы в этот каталог - помоему так удобнее.

Пока молчат.
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Иван Шихалев » 25.05.2007 14:40:17

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

Сообщение shade » 25.05.2007 16:31:05

Кстати в текущем варианте вообще неудобно, т.к. указывается название кодовой таблицы и компилятор ищет файл с именем <codepage>.txt только вместе с исходниками - положить его в какое-то другое место не возможно - получается, что нужно его таскать вместе с исходниками (хотя наверное это не так уж и плохо...).
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение debi12345 » 26.05.2007 01:42:07

Кстати в текущем варианте вообще неудобно, т.к. указывается название кодовой таблицы и компилятор ищет файл с именем <codepage>.txt только вместе с исходниками - положить его в какое-то другое место не возможно - получается, что нужно его таскать вместе с исходниками (хотя наверное это не так уж и плохо...).

Народ, вы что - издеваетесь ? В чем проблема-то ? Уже 100 лет ка крешено.
UTF-8 редактор в зубы (Lazarus, MSEide,...), выставляем кодировку текста UTF8 - и компилируем с опцией "-Fcutf8". И забудете о страшных словах "кодировка" и "локаль".

Кстати, в связи с необходимостью срочного убирания багов WideString в FPC 2.2, возникла следуюшая ситуация :
Код: Выделить всё
While Lazarus breakage is considered more urgent by several people, it
doesn't get a different treatment; if we have to break it to make the
compiler bug free, we will. (And we just did a short while ago to fix a
property bug.)

Не самый лучший английский, прямо скажем. Вкратце :
Код: Выделить всё
Если ради устранения багов компилятора придется поломать Лазарус - мы это сделаем

Запасаемся терпением :)
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение shade » 26.05.2007 12:18:07

Ну не нравиться мне ни Lazarus ни тем более MSEide, хочу альтернативы, т.е. Свободы Выбора!
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение debi12345 » 26.05.2007 14:08:07

Ну не нравиться мне ни Lazarus ни тем более MSEide, хочу альтернативы, т.е. Свободы Выбора!

В системной локали UTF8, MidnightCommander ( недавние версии ) тоже умеет редактировать в этой кодировке.

А что Вам еще нужно для свободы ? Есть такая утиллита - ICONV, любой текст перекодирует. Куда еще свободнее ?

ПС:
В Линуксе, надо постепенно уходить от анахронизма KOI8, раз эта ОС ( в отличие от "гэйм-шелла" ) предоставляет отличные альтернативы, концептуально снимающие все "проблемы".
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5761
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Сообщение Replicator » 27.05.2007 14:44:42

Notepad++ и редактирует в UTF-8 и перекодирует в UTF-8.
Replicator
постоялец
 
Сообщения: 154
Зарегистрирован: 30.04.2006 17:14:45
Откуда: Outer Heaven

Пред.

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

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

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

Рейтинг@Mail.ru