Страница 1 из 1

Добавлено: 11 Август 2004, 13:34
Гость
Есть ли способ вывода на экран символов, которых нет ни в одном не-юникодном Charset'е (по крайней мере, в официальных)?
Ну, например, символ старого русского "Ять" - это символ U+0463.
Есть официальные Charstet'ы - 204 (русский), 186 (балтийский) и т.д.
Может быть, имеются еще какие-нибудь, позволяющие решить данную проблему?

P.S. Интересно, когда же в Кларионе будет полноценная поддержка Юникода, чтобы не приходилось так извращаться?
Написал: Booroondook(77)

Добавлено: 11 Август 2004, 17:41
Гость
Привет!

Используй функции WinAPI
WideCharToMultibyte
и
MultibyteToWideChar

Если нужен пример, поищи тут недавно кидал заплатку для C6 XMLSupport на тему поддержки русских буковок, как раз эти функциешки использовал...

Сергей.
Написал: ClaList(2)

Добавлено: 11 Август 2004, 17:47
Гость
Я вообще-то совсем о другом спрашивал.
Поясню подробнее.
Короче, есть символы разных алфавитов, которые "укладываются" в однобайтовые кодовые страницы. Для отображения такого текста на экране достаточно поставить PROP:FontCharset в нужное значение (204 - для кириллицы, 238 - для Восточной Европы и т.д.).
Но... есть в Юникоде еще и другие символы, для которых вообще нет однобайтовых кодовых страниц и чарсетов (по крайней мере, официальных). Среди таких букв как раз и есть, к примеру, старая кириллица, специфические буквы татарского алфавита, армянский и грузинский алфавиты и так далее (кому интересно - старая кириллица начинается в Юникоде с символа U+0460).
А спрашивал я о том, существует ли в Кларионе способ отобразить эти буквы на экране.
Может быть, имеется какой-либо недокументированный чарсет, включив который можно будет это сделать?
Написал: Booroondook(77)

Добавлено: 11 Август 2004, 19:22
Гость
P.S. Интересно, когда же в Кларионе будет полноценная поддержка Юникода, чтобы не приходилось так извращаться?
Что подразумевается под _полноценной_ поддержкой юникода? Если можно, по пунктам. Потому, как тема очень обширная.

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

--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836
Написал: ClaList(2)

Добавлено: 12 Август 2004, 10:08
Гость
Ну, что я разумею под поддержкой Юникода...
1) Как уже было сказано в моем предыдущем сообщении - возможность вывода на экран (в полях, стрингах, листбоксах и т.д.) букв, которых нет в однобайтовых кодовых страницах.
2) Возможность ввода таких (см. п.1) букв.
3) Возможность одновременного присутствия в одном поле (стринге и т.д.) букв разных зыков - например, кириллицы, немецких "умлаутов", латышских "гарумзиме", французских акцентов и прочих. Как на вывод, так и на ввод.
4) Переделка (расширение) функций CHR() и VAL() - чтобы, допустим, было так:
MyChar=CHR(u041B)
и на экран выдавалась бы буква "Л".
Ну, и так далее.

P.S. На список рассылки я вроде бы подписался, но что-то ничего не приходит. Попробую еще раз.

Написал: Booroondook(77)

Добавлено: 12 Август 2004, 10:15
Гость
Я в свое время наклепал простенькую программку проходящую по ВСЕМ чарсетам от 0 и выше.
Отрабатываются только описанные в PROP: (5 и 5.5)

------------------------------------------------------------
Igor Gubin (igor@quantor.com)
Quantor-Soft Metal
Phone/Fax: (+7 095) 234 4905
WEB: http://www.metaldata.info
http://www.metaldata.ru

Написал: ClaList(2)

Добавлено: 12 Август 2004, 10:22
Гость
Ну, такую программку я тоже делал. Она вообще проходит по всем чарсетам от 0 до 999 (то есть, не только по официальным, но и по вообще всем гипотетически возможным). Обнаружил немало интересного. Например, есть чарсеты-"близнецы" русского, балтийского, арабского и других. А также есть чарсеты, слегка отличающиеся от стандартных (например, есть кириллический, в котором символы от 80 до B8 стоят не на тех местах, что в 204-м чарсете). К сожадению, я не запомнил номера этих чарсетов - быстро прокручивал на экране, да и не ставил перед собой цель запоминания.
Написал: Booroondook(77)

Добавлено: 12 Август 2004, 11:35
Гость
Хм. Я не в курсе, как у виндовых контролов (хотя бы EDIT) дела обстоят с юникодом (может кто расскажет?). Но 2-х байтовую кодировку символов они должны поддерживать. Другое дело с полной поддержкой юникода. например, 'a' с умляутом кодируется либо как U+00E0 либо как 2 символа U+0061 U+0300. По идее, механизм вывода текста должен обо всем этом знать. Например, украинская I с 2-мя точками сверху кодируется 4-мя разными способами. Это уже UTF-8. Я не требую от апишных контролов поддержки UTF-8, тем более что это как бы больше прикладной уровень, но тот же кларин механизм вывода мог бы перед выводом текста конвертить UTF-8 в 2-х байтовую, понимаемую виндой.
Или неплохо было бы для стороковых переменных ввести какой-нить PROP:Unicode (PROP:UCF16, PROP:UTF8), при изменении которого за кулисами вызывались MultiByteToWideChar и аналоги.
Ну, в общем идей масса от простейших в реализации до достаточно сложных. Но это уже не для велосипедистов с их "финальными" релизами. :(

--
Best regards,
Maxim Yemelyanov
Написал: ClaList(2)