Clarion Ajax UTF-8

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Art
Прохожий
Сообщения: 4
Зарегистрирован: 03 Июль 2015, 4:13

Clarion Ajax UTF-8

Сообщение 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
Полагаю, кому-то может пригодиться.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Clarion Ajax UTF-8

Сообщение Yufil »

Неправильно ты, дядя Федор, бутерброд ешь :) Посмотри по ключевому слову UTF8 (или UTF-8), там много интересного...
Art
Прохожий
Сообщения: 4
Зарегистрирован: 03 Июль 2015, 4:13

Clarion Ajax UTF-8

Сообщение Art »

Только русская часть, на остальные алфавиты не распространяется. Ё - не обрабатывается - исправьте сами.
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Clarion Ajax UTF-8

Сообщение Admin »

Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Ответить