Clarion Ajax UTF-8

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

Clarion Ajax UTF-8

Сообщение Art » 05 Июль 2017, 14:56

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

Clarion Ajax UTF-8

Сообщение Yufil » 05 Июль 2017, 22:15

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

Art
Прохожий
Сообщения: 4
Зарегистрирован: 03 Июль 2015, 4:13

Clarion Ajax UTF-8

Сообщение Art » 06 Июль 2017, 2:02

Только русская часть, на остальные алфавиты не распространяется. Ё - не обрабатывается - исправьте сами.

Аватара пользователя
Admin
Администратор
Сообщения: 3434
Зарегистрирован: 05 Июль 2005, 14:59
Откуда: Хабаровск
Контактная информация:

Clarion Ajax UTF-8

Сообщение Admin » 06 Июль 2017, 7:37

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

Ответить