Ответ
Yason 21.06.2004 07:00
Проблему решил следующим способом:
написал класс перекодировки через файл таблицы трансляций из HEX в windows-1251.
# код класса.
@CLASS
hex_ru
@create[]
# считывает таблицу трансляций из файла
$t_alias[^table::load[/data/hex_ru.al]]
@hex_to_ru[instr]
# собственно трансляция
# s_out - выходная строка, доступ к ней как к переменной класса
$s_out[^instr.replace[$t_alias]]
# содержимое файла hex_ru.al
hex ru
%E0 а
%E1 б
%E2 в
%E3 г
%E4 д
%E5 е
%B8 ё
%E6 ж
%E7 з
%E8 и
%E9 й
%EA к
%EB л
%EC м
%ED н
%EE о
%EF п
%F0 р
%F1 с
%F2 т
%F3 у
%F4 ф
%F5 х
%F6 ц
%F7 ч
%F8 ш
%F9 щ
%FB ы
%FC ь
%FA ъ
%FD э
%FE ю
%FF я
%C0 А
%C1 Б
%C2 В
%C3 Г
%C4 Д
%C5 Е
%A8 Ё
%C6 Ж
%C7 З
%C8 И
%C9 Й
%CA К
%CB Л
%CC М
%CD Н
%CE О
%CF П
%D0 Р
%D1 С
%D2 Т
%D3 У
%D4 Ф
%D5 Х
%D6 Ц
%D7 Ч
%D8 Ш
%D9 Щ
%DB Ы
%DC Ь
%DA Ъ
%DD Э
%DE Ю
%DF Я
+
%2C ,
%B9 №
%22 "
# пример использования
@USE
/classes/hex_ru.p
@main[]
$hexconv[^hex_ru::create[]]
^t_who_give_doc.offset(1)
$who_give_doc[$t_who_give_doc.piece]
^hexconv.hex_to_ru[$who_give_doc]
$who_give_doc[$hexconv.s_out]
# И всё хорошо!