Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Jul 18, 2019 12:17 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 9 posts ] 
Author Message
PostPosted: Sat Jun 09, 2018 7:41 pm 
Offline

Joined: Mon Dec 05, 2016 11:04 am
Posts: 136
Вставляя в код IRC-клиента печать различных байтов, я узнал как они выглядят в Kolibri :
https://i.imgur.com/SFWJyEU.png ( https://imgur.com/dDx3rQR ) + та же картинка во вложениях
(Kolibri ASCII table, пожалуйста не уменьшайте в размерах: качество сильно портится)

Получается, для символов 0, 32 и 33 - 126 это ещё соответствует "стандартному ASCII"
( https://www.asciitable.com/ ), а вот для 1-31 и 127 напечатало очень странные символы.
Символ с кодом 3 вообще не смогло напечатать - IRC клиент вылетает.
Ещё: во второй половине байта 128 - 255 нет ни одного символа, нет расширенной ASCII

С этим "нестандартным ASCII" я вроде бы разобрался, но до сих пор не знаю как печатать
русские буквы - знаю только что они состоят из двух байт! И другие двухбайтовые
или даже трёхбайтовые символы которые поддерживаются, особенно языковые:
если в System Settings выбрать эстонский, покажет i с двумя точками и жирный кружочек

Подскажите пожалуйста, где можно узнать более подробно про коды нестандартных символов в Kolibri ?


Attachments:
File comment: Kolibri ASCII table which I tried to make by myself
KolibriASCII.png
KolibriASCII.png [ 180.17 KiB | Viewed 2321 times ]
Top
   
PostPosted: Sat Jun 09, 2018 9:28 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
floppy121 wrote:
Kolibri ASCII table
У нас есть такая программа viewtopic.php?f=42&t=1455
floppy121 wrote:
Получается, для символов 0, 32 и 33 - 126 это ещё соответствует "стандартному ASCII"
( https://www.asciitable.com/ ), а вот для 1-31 и 127 напечатало очень странные символы.
В KolibriOS используется кодировка https://ru.wikipedia.org/wiki/CP866 основанная на https://ru.wikipedia.org/wiki/CP437
floppy121 wrote:
знаю только что они состоят из двух байт!
В 8-битной кодировке(CP866) символы состоят из одного байта.
floppy121 wrote:
Вставляя в код IRC-клиента печать различных байтов
Код в студию! Иначе гадать можно долго — может ты пытаешься UTF-8 или UTF-16 вывести?


Top
   
PostPosted: Sat Jun 09, 2018 10:40 pm 
Offline

Joined: Mon Dec 05, 2016 11:04 am
Posts: 136
0CodErr wrote:
У нас есть такая программа http://board.kolibrios.org/viewtopic.php?f=42&t=1455
её скрин показывает что у русской буквы А код 128, но когда я пытался символы с такими кодами печатать - ничего не выводило
floppy121 wrote:
В KolibriOS используется кодировка https://ru.wikipedia.org/wiki/CP866 основанная на https://ru.wikipedia.org/wiki/CP437
Совпадает расположением символов 0, 32 и 33-126 ; но остальные символы совсем другие! Например, символ с кодом 1: IRC-клиент распечатал чёрный ромб, а в CP866 на этом месте смайлик (более удобная таблица - https://en.wikipedia.org/wiki/Code_page_866) . И символы 128-255 не печатаются
0CodErr wrote:
Код в студию! Иначе гадать можно долго — может ты пытаешься UTF-8 или UTF-16 вывести?
IRCC в svn-репозитории Kolibri , там есть файл encodings.inc , но в другом файле userparser.inc (строка 437) в "cmd_usr_code:" (функция для смены кодировки, вызываемая по команде /code) - только "; TODO", поэтому я подумал что encodings неактивен . Русские буквы точно занимают два байта: когда я попробовал написать сообщение по-русски в поле ввода IRC клиента, его длина в байтах оказалась в два раза больше чем было букв


Top
   
PostPosted: Sat Jun 09, 2018 11:22 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
floppy121 wrote:
IRCC в svn-репозитории Kolibri
Я прекрасно знаю, где исходник IRCC. Где твой код?
floppy121 wrote:
когда я пытался символы с такими кодами печатать - ничего не выводило
floppy121 wrote:
Например, символ с кодом 1: IRC-клиент распечатал чёрный ромб, а в CP866 на этом месте смайлик
floppy121 wrote:
Русские буквы точно занимают два байта: когда я попробовал написать сообщение по-русски в поле ввода IRC клиента, его длина в байтах оказалась в два раза больше чем было букв
Ну, значит, это не CP866.

Взял бы что-то попроще тогда, если с IRCC сложно разобраться.
Хотя бы тот же example.asm из дистрибутива.
http://websvn.kolibrios.org/filedetails ... xample.asm


Top
   
PostPosted: Sat Jun 09, 2018 11:45 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
0CodErr wrote:
может ты пытаешься UTF-8 или UTF-16 вывести?
floppy121 wrote:
Русские буквы точно занимают два байта:
0CodErr wrote:
Ну, значит, это не CP866.
Похоже, что так и есть:
Code:
user_parser:
................................................................................
        mov     esi, input_text
        mov     edi, user_command
        call    recode                                  ; Convert to UTF-8
................................................................................
recode:
        mov     eax, [encoding]
        jmp     [recode_proc+eax*4]



encoding        dd      UTF8


Top
   
PostPosted: Sat Jun 09, 2018 11:52 pm 
Offline

Joined: Mon Dec 05, 2016 11:04 am
Posts: 136
0CodErr wrote:
Я прекрасно знаю, где исходник IRCC. Где твой код?
Полный код смогу выложить в лучшем случае на следующей неделе, поэтому постараюсь воспроизвести важные моменты по памяти. Для печати символов на экран я изменял сообщение готовое к распечатке внутри userparser.inc ( возможно строки 59-60 ) Прямо перед
Code:
        mov     esi, user_command
        call    print_asciiz
я добавлял код наподобие
Code:
mov byte[user_command + 0], 31
mov byte[user_command + 1], 32
mov byte[user_command + 2], 33
...
, затем писал в консоль длинное сообщение и смотрел/скринил на что заменятся его символы
0CodErr wrote:
Взял бы что-то попроще тогда, если с IRCC сложно разобраться
Пытаюсь одну очень важную функцию добавить, уже наполовину получилось несмотря на весьма маленький опыт именно в x86 ассемблере, и разумеется поделюсь с вами :wink:


Top
   
PostPosted: Sun Jun 10, 2018 12:14 am 
Offline

Joined: Mon Dec 05, 2016 11:04 am
Posts: 136
0CodErr wrote:
Похоже, что так и есть

Textbox, в который мы вводим сообщение, предоставляется ОС Колибри? Получается, на этапе ввода текста это 1 байт CP866, который потом конвертируется в два байта UTF-8 функцией recode_to_utf8 из encodings.inc ? Надеюсь я на верном пути, сейчас пытаюсь понять utf8_table


Top
   
PostPosted: Mon Jun 11, 2018 11:49 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
floppy121 wrote:
Textbox, в который мы вводим сообщение, предоставляется ОС Колибри?
Он предоставляется библиотекой box_lib
floppy121 wrote:
Получается, на этапе ввода текста это 1 байт CP866, который потом конвертируется в два байта UTF-8 функцией recode_to_utf8 из encodings.inc ?
Да, получается так. Но не обязательно в два байта — это зависит от символа: английские буквы, цифры, многие знаки препинания занимают один байт.


Top
   
PostPosted: Wed Jul 04, 2018 7:09 pm 
Offline

Joined: Mon Dec 05, 2016 11:04 am
Posts: 136
0CodErr wrote:
Где твой код?
Как и обещал, выложил свои наработки по IRCC, вот они: viewtopic.php?f=11&p=70875


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 9 posts ] 

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited