Есть встроенные в парсер таблицы
Luzhnikovskiy 10.10.2003 12:09
Для отображения
%XX достаточно позвать
^#XX (замена, полагаю, очевидна).
Но: это сработает только в том случае, когда кодировка этого
%XX совпадает с $request:charset.
Что делать, если не совпадает: (для koi -> win)
1. Грузим в таблицу чарсеты с помощью ^table::load[$MAIN:charsetsdir/нужный.cgf]. Грузить надо koi и в другую таблицу - win
2. Разбиваем
%XX%YY%ZZ на байтики (XX, YY, ZZ)
3. Делаем по koi ^koi.locate[char;0x"байтик"]
4. Делаем по win ^win.locate[unicode1;$koi.unicode1]
5. Вычленяем из найденного $win.char XX и делаем ^process[^^#XX]
Муторно, но решаемо.
Понятное дело, не учтены неэскейпящиеся символы (латиница, цифры, минус) и + (пробел)
Ну и конечно ^process[] надо делать один на уже собранную строку ^#XX^#YY^#ZZ...