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

Clarion Ajax UTF-8

Добавлено: 05 Июль 2017, 14:56
Art
Тут меня попросили сделать Ajax в программе на CGI. Поскольку Ajax понимает только UTF-8, пришлось сделать пару подпрограмм.

Код: Выделить всё

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
Полагаю, кому-то может пригодиться.

Clarion Ajax UTF-8

Добавлено: 05 Июль 2017, 22:15
Yufil
Неправильно ты, дядя Федор, бутерброд ешь :) Посмотри по ключевому слову UTF8 (или UTF-8), там много интересного...

Clarion Ajax UTF-8

Добавлено: 06 Июль 2017, 2:02
Art
Только русская часть, на остальные алфавиты не распространяется. Ё - не обрабатывается - исправьте сами.

Clarion Ajax UTF-8

Добавлено: 06 Июль 2017, 7:37
Admin