OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 07:54

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: UTF-8
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 07:06 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Существует ли реализация кодека UTF-8 для Oberon/CP/AO?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 07:55 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Есть конвертер CpcUtf8Conv, там соотв-но процедуры кодирования/декодирования. Для CHAR, без контроля ошибок.

Уточните, пожалуйста, что Вы понимаете под кодеком.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 08:59 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Евгений Темиргалеев писал(а):
Уточните, пожалуйста, что Вы понимаете под кодеком.
Ну, собственно, кодер и декодер. Спасибо за подсказку про CPC.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 09:17 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Посмотрел CpcUtf8Conv. Действительно, обработки ошибок нет вообще, контроля диапазонов нет, выброса нелегальных символов нет, контроля чрезмерно длинных кодировок нет. Кроме того, поддерживается кодирование и декодирование только до 3-байтовых последовательностей UTF-8 (легальными являются и 4-байтовые последовательности, а ещё есть 5- и 6-байтовые, их тоже надо корректно обрабатывать). Чтение производится в один-единственный CHAR, т.е. сформировать surrogate pair UCS-2/UTF-16 не получится.

Есть такой замечательный стресс-тест для декодеров UTF-8, упоминается в UTF-8 and Unicode FAQ. Много интересного можно разглядеть.

Погодите, у нас же где-то народ XML делал, в том числе для Jabber. Там-то должен быть нормальный, безопасный (хотя бы декодер) UTF-8?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 09:34 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Скачал Xmlcore из CPC, увидел тот же самый код плюс дополнительная строчка:
Код:
IF (c1=-17) & (c2=-69) & (c3=-65) THEN rd.ReadChar; END;  (* 25.05.2008 21:58:57 Не знаю почему, мешает парсингу, всегда в начале файла. *)
Спасибо за комментарий, поржал : ))
http://en.wikipedia.org/wiki/Byte_order_mark


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 10:08 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1488
Откуда: Украина, Киев
В А2 есть UTF8Strings.Mod с процедурами кодирования/декодирования.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 11:29 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Ярослав Романченко писал(а):
В А2 есть UTF8Strings.Mod с процедурами кодирования/декодирования.
Во! Это уже гораздо лучше!
Только всё же безопасность хромает, даже процедура Valid не спасает. Например, передать ей любую строку, в которой первые два символа "C0X 80X", и она всю строку будет считать валидной. Разве же это правильно?

Идея с массивом CodeLength понравилась, но нужны доработки. Например, позиции 0FEH и 0FFH в этом массиве не инициализируются процедурой загрузки модуля. Если там окажется одно из возможных значений, будет ошибка, а если там будет 0X, то, например, процедура Length зависнет на этих символах - вопреки заявлению документации "violations of these assumptions may cause run-time exceptions, but not endless loops or memory corruption".

Другие всякие есть позиции, которые должны бы считаться ошибкой, но будут радостно пропущены процедурой Valid. Например, коды из диапазона суррогатных пар UTF-16, значения > 10FFFFH и некоторые другие.

Вердикт: из рассмотренных на сегодня это самая лучшая реализация, но подходит только для использования с well-formed UTF-8.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Четверг, 28 Октябрь, 2010 17:58 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Александр Ильин писал(а):
Скачал Xmlcore из CPC, увидел тот же самый код плюс дополнительная строчка:
Код:
IF (c1=-17) & (c2=-69) & (c3=-65) THEN rd.ReadChar; END;  (* 25.05.2008 21:58:57 Не знаю почему, мешает парсингу, всегда в начале файла. *)
Спасибо за комментарий, поржал : ))
http://en.wikipedia.org/wiki/Byte_order_mark

Вот бы всё про всё знать, чай, не до смеха было бы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Пятница, 29 Октябрь, 2010 05:31 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Пётр Кушнир писал(а):
Вот бы всё про всё знать, чай, не до смеха было бы.
Не обижайтесь, я не над вами смеялся, а над комментарием.

По-моему, лишние символы фильтровать - задача не для декодера, а для сканера/парсера. Или для того, кто знает, где начало файла, а где середина.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Пятница, 29 Октябрь, 2010 20:39 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Нашёл в системе O3: O3baseStrings.Utf8Decode и Utf8Encode. Тоже безо всякой обработки ошибок, тоже не более трёхбайтовых кодов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Суббота, 30 Октябрь, 2010 16:59 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Александр, ещё есть конвертеры: http://zinnamturm.eu/downloadsTZ.htm#UnicodeMappings
Цитата:
UnicodeMappings provide mappers for upper, lower or title case mapping, and also provide converters from Unicode (UTF-8, UTF-16, UTF-32; little or big endian) to other encodings or vice versa.
Посмотрите? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Суббота, 30 Октябрь, 2010 17:39 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Евгений Темиргалеев писал(а):
Посмотрите? :)
С удовольствием! Спасибо за ссылку.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Вторник, 09 Ноябрь, 2010 14:51 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Александр Ильин писал(а):
Евгений Темиргалеев писал(а):
Посмотрите? :)
С удовольствием! Спасибо за ссылку.

Каков будет диагноз?

Ещё такой вопросец. Я хочу экспортировать ODC в текстовый ASCII документ с кодировкой UTF-8 и обратно, импортировать из него. Какую реализацию будет достаточно внедрить? Мне нужно написать процедуры типов Exporter и Importer для ЧЯ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Вторник, 09 Ноябрь, 2010 15:23 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Неплохо бы иметь такую пару маленьких mapper'ов:
читает голые байты, а выдает (когда его читают) 1, 2-, .. 6-байтные коды.
Политерно и массивами.
И писатель аналогичный.

То есть в почти чистом виде правила кодировки UTF-8.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Вторник, 09 Ноябрь, 2010 15:36 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Роман М. писал(а):
Ещё такой вопросец. Я хочу экспортировать ODC в текстовый ASCII документ с кодировкой UTF-8 и обратно, импортировать из него. Какую реализацию будет достаточно внедрить? Мне нужно написать процедуры типов Exporter и Importer для ЧЯ.
мы внедрили CpcUtf8Conv, ничего сами не писали, и пока живы :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Вторник, 09 Ноябрь, 2010 15:55 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Евгений Темиргалеев писал(а):
Роман М. писал(а):
Ещё такой вопросец. Я хочу экспортировать ODC в текстовый ASCII документ с кодировкой UTF-8 и обратно, импортировать из него. Какую реализацию будет достаточно внедрить? Мне нужно написать процедуры типов Exporter и Importer для ЧЯ.
мы внедрили CpcUtf8Conv, ничего сами не писали, и пока живы :)

Тогда хорошо. Спасибо. А то Александр насторожил своими замечаниями по некоторым реализациям, что я аж засомневался что выбрать.

Поправка.
Как оказалось, CpcUtf8Conv вполне устраивает меня. Обошёлся малой кровью. :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Вторник, 09 Ноябрь, 2010 16:59 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Роман М. писал(а):
Тогда хорошо. Спасибо. А то Александр насторожил своими замечаниями по некоторым реализациям, что я аж засомневался что выбрать.

Поправка.
Как оказалось, CpcUtf8Conv вполне устраивает меня. Обошёлся малой кровью. :)
Если устойчивость к некорректным входным данным не нужна, то сгодится. Например, если будет декодировать только то, что сам закодировал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: UTF-8
СообщениеДобавлено: Понедельник, 08 Август, 2011 16:37 
Аватара пользователя

Зарегистрирован: Пятница, 20 Январь, 2006 13:18
Сообщения: 37
Когда-то давно писал модуль для работы с различными предсталвениями Unicode под XDS-Oberon.
При написании опирался на стандарты.
Для полного счастья не хватает нормализации.

После этого еще делал utf8 -> utf16 и utf16 -> utf8 через конечный автомат, но на паскале. Если интересно могу поискать.


Вложения:
Archive.zip [2.61 КБ]
Скачиваний: 660
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB