Page 2 of 2

Posted: Thu Oct 12, 2006 10:22 pm
by Veliant
я тож в свое время писал макросы первода кодировки win->dos и dos->win

Code: Select all

macro dostowin stroka,dlina
{
local .engbykvi,.nexting,.nach,.end,.length,.x1
jmp .x1
	.length dd 0
.x1:
	mov eax,dlina
	sub eax,1
	mov [.length],eax
.nach:
    mov eax,[.length]
    cmp eax,0
    jl .end
    mov bl,byte [stroka+eax]
    cmp bl,128
    jb .engbykvi
        cmp bl,224
        jb .nexting
                add bl,16
                jmp .engbykvi
        .nexting:
        add bl,64
    .engbykvi:
    mov byte [stroka+eax],bl
    dec [.length]
    jmp .nach
.end:
}

Code: Select all

macro wintodos stroka,dlina
{
local .engbykvi,.nexting,.nach,.end,.length,.x1
jmp .x1
	.length dd 0
.x1:
	mov eax,dlina
	sub eax,1
	mov [.length],eax
.nach:
    mov eax,[.length]
    cmp eax,0
    jl .end
    mov bl,byte [stroka+eax]
    cmp bl,192
    jb .engbykvi
        cmp bl,240
        jb .nexting
                sub bl,16
                jmp .engbykvi
        .nexting:
        sub bl,64
    .engbykvi:
    mov byte [stroka+eax],bl
    dec [.length]
    jmp .nach
.end:
}

Posted: Thu Oct 12, 2006 11:21 pm
by KCEOH
Поддерживаю mike.dld - дофига было опыта и мучений при создании / переносе всяких сайтов, гостевых, и прочего, утф8 рулит. Однако camper тож прав - у пользователей винды файлы поименованы в win1251, а у пингвинятников - скорее всего в koi8.

Posted: Fri Oct 13, 2006 9:54 am
by Serge
В UTF-8 переменная длина символов. Это усложняет работу со строками. И неясно как забивать UTF строки в Фасме. Проще сделать обычный Юникод.

Re:

Posted: Wed Oct 12, 2011 5:22 pm
by dzavalishin
Serge wrote:В UTF-8 переменная длина символов. Это усложняет работу со строками. И неясно как забивать UTF строки в Фасме. Проще сделать обычный Юникод.
utf8 хорош как формат обмена - из-за совместимости с ascii.

и его нетрудно конвертить в utf16 внутри программы.

Re: Разные кодировки

Posted: Wed Oct 12, 2011 5:43 pm
by CleverMouse
В UTF16 вообще-то тоже переменная длина символов, спасибо комитету Unicode за суррогатные пары.

Re: Разные кодировки

Posted: Wed Oct 12, 2011 7:25 pm
by dzavalishin
Тоже правда. Впрочем, масса народу на них кладёт без зазрения совести. Если хочется совсем уж красоты - никто не мешает 32 бита на символ потратить - с точки зрения производительности даже хорошо. :) Промежуточный вариант - грузить utf8 в 16, а если встретишь пару - ругаться и отказываться такой файл читать.

Re: Разные кодировки

Posted: Thu Oct 13, 2011 2:50 am
by SII
Если есть стремление к экономии памяти и одновременно к гибкости, то для внутриядерных сущностей можно использовать UCS-2 -- тот же UTF16, но без суррогатных пар. Для всяких там имён устройств, задач и т.д. и т.п. большего и не надо. Ну а уж в прикладных программах, занятых обработкой данных (типа текстовых редакторов) надо поддерживать полноценный Юникод. Учитывая, что даже на самом древнем из более-менее доступных ПК памяти завались (сотни мегабайт как минимум), для внутреннего представления в них можно использовать 32-разрядную кодировку. Впрочем, его же можно использовать и в ядре, ведь и здесь память -- не слишком острый вопрос. Ну а применять, например, UTF8 для обработки -- ИМХО, слишком неудобно, да и медленно.

Пы.Сы. У себя в ядре я использую UCS-2, но на МК память -- куда более дефицитный ресурс, её может быть всего пару-тройку десятков килобайт ОЗУ (ну, плюс флэш-ПЗУ для кода, но оно в данном случае не в счёт).

Re: Разные кодировки

Posted: Sun Nov 20, 2011 8:33 pm
by Wildwest