Русские буквы, а также многие другие...

Все что связано с программированием на Амиге.

Модераторы: striimii, Vinnny

Русские буквы, а также многие другие...

Сообщение VovaniuS 15 окт 2002, 20:44

Как - то на досуге подумал, а почему бы не перейти на кодировку Unicode?
В библиотеках АмигаОС уже все практически сделано! Осталось лишь (как мне кажется) пропатчить процедуры печати и ввода с клавиатуры (graphics.library-Text(), console.device и т.п. А также немного locale.library). Написать конвертеры (это даже я могу :) ).
И в результате получим:
Совместимость со старыми программами (UTF-8 кодирует все коды ниже 128 одним байтом, остальные двумя, тремя и т.д. в случае появления комбинаций байт, не соответствующих формату UTF-8 можно их интерпретировать согласно любой восьмибитной кодировке)
Практически необъятный набор символов. (UTF-8 поддерживает до 2 миллиардов символов)
(можно также не включать режим UTF-8, если в шрифте нет символов с кодами>255)
(Возможно) Совместимость и с любой старой кодировкой.
...Несколько сумбурно, но мысль понятна вроде. Ваши мнения?
Кстати, интересно, а какой кодировкой греки пользуются?
VovaniuS
 

Re: Русские буквы, а также многие другие...

Сообщение lvd 15 окт 2002, 21:10

VovaniuS писал(а):Как - то на досуге подумал, а почему бы не перейти на кодировку Unicode?
В библиотеках АмигаОС уже все практически сделано! Осталось лишь (как мне кажется) пропатчить процедуры печати и ввода с клавиатуры (graphics.library-Text(), console.device и т.п. А также немного locale.library). Написать конвертеры (это даже я могу :) ).


И как ты собираешься, к примеру, патчить FGetC из dos.library?
WBR, Lord Vader
Аватара пользователя
lvd
Надоедливый Амигодух
Надоедливый Амигодух
 
Сообщения: 275
Зарегистрирован: 18 май 2002, 23:47

Re: Русские буквы, а также многие другие...

Сообщение Гость 18 окт 2002, 14:31

lvd писал(а):
VovaniuS писал(а):Как - то на досуге подумал, а почему бы не перейти на кодировку Unicode?

И как ты собираешься, к примеру, патчить FGetC из dos.library?

А я ее патчить и не собираюсь. Она в общем-то к печати не относится. Патчить надо процедуры вывода на экран/принтер, ввода с клавиатуры (чтобы генерила Unicode значения/ UTF-8 последовательности) и процедуры сортировки из Locale.

а FGetC? А ей-то откуда знать, UTF8 это файл, или там UTF16 или UNICODE Big Endian 32bit?
Допустим там у нас в файле в формате UTF8 лежит буква Б. тогда вызовы FGetC вернут последовательно коды $D0, $A1 Что соответствует символу #$401 Unicode - букве Б Эти два символа любая нормальная программя потом либо выдаст на консоль (пропатченую) которая буковку Б и выведет, либо пошлет на graphics.library->Text которая тоже пропатчена. Ну а если программа сама решит что-нибудь вывести, то незнаю.
Дополнительно надо пропатчить классы ввода строк, для верного перемещения курсора.
и все вроде. Мне интересно, нужно/хочется это еще кому-нибудь кроме меня.
Гость
 

Re: Русские буквы, а также многие другие...

Сообщение lvd 18 окт 2002, 21:38

Anonymous писал(а):а FGetC? А ей-то откуда знать, UTF8 это файл, или там UTF16 или UNICODE Big Endian 32bit?
Допустим там у нас в файле в формате UTF8 лежит буква Б. тогда вызовы FGetC вернут последовательно коды $D0, $A1 Что соответствует символу #$401 Unicode - букве Б Эти два символа любая нормальная программя потом либо выдаст на консоль (пропатченую) которая буковку Б и выведет, либо пошлет на graphics.library->Text которая тоже пропатчена. Ну а если программа сама решит что-нибудь вывести, то незнаю.
Дополнительно надо пропатчить классы ввода строк, для верного перемещения курсора.
и все вроде. Мне интересно, нужно/хочется это еще кому-нибудь кроме меня.


Ну хорошо, допустим FGetC ничего не знает про utf8 или unicode или как её там. И при чтении из Input() тебе падают уникодные 2байтовые символы. А как, спрашивается, эти 2байтовые символы будут обрабатываться всем тем абсолютным большиством прог, которые про твой уникод не знают и не желают знать? backward compability однако не выходит, если всё пропатчить :)
WBR, Lord Vader
Аватара пользователя
lvd
Надоедливый Амигодух
Надоедливый Амигодух
 
Сообщения: 275
Зарегистрирован: 18 май 2002, 23:47

Re: Русские буквы, а также многие другие...

Сообщение Гость 22 окт 2002, 20:45

lvd писал(а):
Anonymous писал(а):а FGetC? А ей-то откуда знать, UTF8 это файл, или там UTF16 или UNICODE Big Endian 32bit?
Допустим там у нас в файле в формате UTF8 лежит буква Б. тогда вызовы FGetC вернут последовательно коды $D0, $A1 Что соответствует символу #$401 Unicode - букве Б Эти два символа любая нормальная программя потом либо выдаст на консоль (пропатченую) которая буковку Б и выведет, либо пошлет на graphics.library->Text которая тоже пропатчена. Ну а если программа сама решит что-нибудь вывести, то незнаю.
Дополнительно надо пропатчить классы ввода строк, для верного перемещения курсора.
и все вроде. Мне интересно, нужно/хочется это еще кому-нибудь кроме меня.


Ну хорошо, допустим FGetC ничего не знает про utf8 или unicode или как её там. И при чтении из Input() тебе падают уникодные 2байтовые символы. А как, спрашивается, эти 2байтовые символы будут обрабатываться всем тем абсолютным большиством прог, которые про твой уникод не знают и не желают знать? backward compability однако не выходит, если всё пропатчить :)

скорей ты патчем этим программы, работающие не с текстовыми файлами с толку собъешь.

А как ты его "абсолютное большинство прог" его обрабатывать будут собственно? максимум где предвижу глюки, так это в текстовых редакторах и графических (инструмент "текст"). Остальные программы максимум, что с этим текстом сделать могут, так это отсортировать строки, а это даже стандартными сишными функциями правильно делается.
Скажем так: а нужно ли "абсолютному большинству прог" знать, что это ОДИН ПЕЧАТАЕМЫЙ СИМВОЛ"? в остальном UTF-8 ничем от любой другой строки не отличается. большинство программ будут работать правильно не по задумке автора программы, а из-за некоей предусмотрительности авторов utf-8

кстати соотношение 1байт-1символ даже в стандартных кодировках не удовлетворяется. (esc-коды например,tab) Например штатный more ничего ни о esc, ни о tab не знает, и при этом нормально работает.

кстати UTF-8 может отражать один символ последовательностью до 6 байт.
для кодирования символов с кодами больше 128 кодируется последовательностями байт с кодами 128-253. а меньшие 128 - один в один (возможен лишь конфликт с кодом CSI-$9B) я уже говорил о том, что неверную utf8-последовательность можно интерпретировать код-в-код.
насчет кодов 128-160 (вторая область управляющих кодов) - вроде как-то жила на амиге кодировка cp866 aka dos aka oem, и глюков было вроде немного.

подойдя с другой стороны, можно представить utf-8 коды как нечто вроде esc-последовательностей в тексте для переключения кодировок.

зы. приведи возможный глюк.

ззы. Кто-нибудь, приведите мне пример исходника какого-нибудь патча! чтобы понять как патчи делать! да что говорить, пробовать надо.
Гость
 

Re: Русские буквы, а также многие другие...

Сообщение VovaniuS 22 окт 2002, 20:50

...
зы. приведи возможный глюк.

ззы. Кто-нибудь, приведите мне пример исходника какого-нибудь патча! чтобы понять как патчи делать! да что говорить, пробовать надо.
^^^ это я написал ^^^

что-то я вечно "выхожу" из под своего имени :( глюки на форуме :(
Подпись_____
Мои сообщения можно публиковать под лицензией BSD PDL
VovaniuS
Надоедливый Амигодух
Надоедливый Амигодух
 
Сообщения: 304
Зарегистрирован: 18 окт 2002, 15:22
Откуда: из Москвы

Re: Русские буквы, а также многие другие...

Сообщение lvd 22 окт 2002, 22:32

зы. приведи возможный глюк.

Простейший пример - форматирование текста. Выбираем байтики, смотрим ширину их символов и делаем форматирование. Что будет в случае твоей утф8 - думай сам :)

Далее придумывай сам... нам и так глюкодромов хватает... ты ещё один нам хочешь впарить.

Да и вообще, 866 очень даже живёт, на том же экранчике, где живёт Spot :)
WBR, Lord Vader
Аватара пользователя
lvd
Надоедливый Амигодух
Надоедливый Амигодух
 
Сообщения: 275
Зарегистрирован: 18 май 2002, 23:47

Re: Русские буквы, а также многие другие...

Сообщение VovaniuS 25 окт 2002, 19:22

lvd писал(а):
зы. приведи возможный глюк.

Простейший пример - форматирование текста. Выбираем байтики, смотрим ширину их символов и делаем форматирование. Что будет в случае твоей утф8 - думай сам :)

Далее придумывай сам... нам и так глюкодромов хватает... ты ещё один нам хочешь впарить.

Да и вообще, 866 очень даже живёт, на том же экранчике, где живёт Spot :)


Если программа считает ширину строки через функции ОС, а они там есть (не помню, правда, как называется, а не самопально выковыривая метрики шрифтов, то все будет нормально, так как они являются частью функций печати.
еще есть?

Я не билл гейтс, и ничего вам впаривать не собираюсь. Общество само сделает выбор. Не понравится-останется для истории.
Подпись_____
Мои сообщения можно публиковать под лицензией BSD PDL
VovaniuS
Надоедливый Амигодух
Надоедливый Амигодух
 
Сообщения: 304
Зарегистрирован: 18 окт 2002, 15:22
Откуда: из Москвы

UNICODE

Сообщение Vovka_ 21 мар 2003, 10:36

IMHO все это можно отнести к новой ОСи... МОС или АОС4
пока конвертер - реально
Vovka_
Проходил мимо
Проходил мимо
 
Сообщения: 3
Зарегистрирован: 21 мар 2003, 10:08


Вернуться в Программирование

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

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

cron