Код: Выделить всё
from_UTF8 Routine
! strout string(2048) - на выходе
! str до string(2048) - на входе
! sym string(1)
! sim byte
clear(strout)
e0 = len(clip(str))
if e0 <> 0 then
e2 = 1 ! Индекс по входной строке
e1 = 1 ! ИНлекс по выходной строке
loop
sym = str[(e2)] ! Получим входной символ
sim = val(sym) ! Получим его значение
if sim < 128 then !
strout[(e1)] = sym ! Перенесем без изменений
e1 = e1 + 1 ! На следующий байт
end !
if sim = 208 then !
e2 = e2 + 1
ims = val(str[(e2)]) + 48
strout[(e1)] = chr(ims)
e1 = e1 + 1
end
if sim = 209 then
e2 = e2 + 1
ims = val(str[(e2)]) + 112
strout[(e1)] = chr(ims)
e1 = e1 + 1
end
e2 = e2 + 1
if e2 = e0 + 1 then break .
end
end
exit
To_UTF8 Routine
clear(strout)
e0 = len(clip(str))
if e0 <> 0 then
e2 = 1
loop e1 = 1 to e0
sym = str[(e1)]
sim = val(sym)
if sim < 128 then
strout[(e2)] = sym
e2 = e2 + 1
else
if sim >= 192 and sim <=239 then
strout[(e2)] = '<208>'
e2 = e2 + 1
strout[(e2)] = chr(sim-48)
else
if sim >= 240 and sim <=255 then
strout[(e2)] = '<209>'
e2 = e2 + 1
strout[(e2)] = chr(sim-112)
else
strout[(e2)] = '.'
end
end
e2 = e2 + 1
end
end
end
exit