Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Web Ирбис и Z-Ирбис :  ИРБИС Irbis
 
Веб-64. Проблемы с кодировками.
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 15, February, 2005 18:27

Вот такой вот простенький фрейм

<table border="0" width="100%">
<tr style="font-size:10px; text-align:right; font-family: Verdana;"><td>
<!FORMAT='<a href="/cgi/irbis64r/cgiirbis_64.exe?C21COM=F&I21DBN=iubnt_sm',if p(v5) then '&Z21ID=',v5 fi,if p(v1014) then '&Z21FAMILY=',v1014 fi,if p(v1015) then '&Z21FLAGID=',v1015 fi,'">Упрощеный поиск</a>'>
&nbsp;|&nbsp;
<!FORMAT='<a href="/cgi/irbis64r/cgiirbis_64.exe?C21COM=F&I21DBN=iubnt_ex',if p(v5) then '&Z21ID=',v5 fi,if p(v1014) then '&Z21FAMILY=',v1014 fi,if p(v1015) then '&Z21FLAGID=',v1015 fi,'">Расширенный поиск</a>'>
</td></tr></table>

Естественно все сохранено как UTF-8. Инклудится на страницу он через <!FILE=search_forms.inc> (пробовал и через ини в список выводимых фреймов).
На странице получаю

Упрощеный поиск | Расширенный поиск

В чем загвоздка может быть?

Re: Веб-64. Проблемы с кодировками.
Пользователь: Карауш (IP-адрес скрыт)
Дата: 15, February, 2005 19:24

По моему опыту при передаче параметров, а русских символов в любой кодировке через строку всегда были проблемы. Иногда есть возможность "попасть" в настройки Apache+кодировка+функции перекодирования потока и пр. Но при установке новой версии чего-либо приходится опять попадать.
Как показала практика ничего лучше, чем ссылка на mfn - не существует, а вот поиск этих номеров mfn делать нужно через unifor внутри формы, а не "гонять" данные через браузеры пользователей. Хотя это всего лишь идеология, которая просто накладывает ограничения.

Когда я писал свой ИРБИС в Томске, то на кодировки русских символов и нахождение функции потратил недели две. И в итоге случайно я нашел функцию php, которая перекодирует из того, что возвращает "вместо" русских символов Explorer в нечто похожее на символы.
Вот она в действии:
$k1="http://127.0.0.1/cgi-bin/wxis.exe/?IsisScript=xis/".$script.$lev.".xis&search=".UrlEncode($str);
в файле search.php в дистрибутиве сайта "ИРБИС в Томске"

Когда Web-ИРБИС64 встраивали в корпоративный сайт на заводе, который стоит на русском Apache, а сами страницы запроса И64 и ответа собираются из процесса php с соответсвующей перекодировкой с учетом состояния Apache, то профессионалы с офшорного Web-программирования сказали, чтобы больше я так не делал. С русскими буквами такая морока до сих пор.


Re: Веб-64. Проблемы с кодировками.
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 16, February, 2005 09:32

Что-то я не совсем понял, это было вступление про проблемы с русскими символами или ответ на мой вопрос :). Фишка-то ведь в том, что все формы вставляются в ответ правильно, а эта черте как.

Re: Веб-64. Проблемы с кодировками.
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 16, February, 2005 19:40

Все, разобрался.
Еще пара советов на будущее:
1. Если во фрейме есть русский текст (да и вообще наверное любой, отличный от латиницы), но нет конструкций типа
<!FORMAT='тут формат содержит НЕ латиницу'>
тогда фрейм необходимо сохранять как UTF-8.
2. Если Вам необходимо вставить на страницу, содержащую НЕ латиницу выше описаный формат, то нужно сделать так. Сохранить фрейм как UTF-8, а в него вставить строку
<!FILE=имя_файла_содежащего_формат_с_нелатиницей.inc>
и сам этот файл (имя_файла_содежащего_формат_с_нелатиницей.inc) сохранить в кодировке ANSI.

Удачи.

Re: Веб-64. Проблемы с кодировками.
Пользователь: Constantin (IP-адрес скрыт)
Дата: 17, February, 2005 09:47

По умолчанию все форматы ИРБИС64 имеют кодировку ANSI.
Так как фрейм в кодировке UTF8, то и формат уже имеет такую же кодировку.
В этом случае форматеру надо указать этот факт и поставить первый символ !
Этот символ не играет никакой роли кроме указания кодировки формата и будет удален, поэтому брать его в кавычки не надо.
В случае как у Макса можно действовать следующими путями:
1. Написать во фрейме <!FORMAT=!'РУССКИЙ ТЕКСТ'>
2. СОздать файл в нужной БД text.pft 'РУССКИЙ ТЕКСТ' в кодировке ANSI и написать во фрейме <!FORMAT=@text>
3. Поменять в ини файле irbis_server.ini кодировку фреймов на ANSI
перекодировать все фреймы в ANSI
и тогда уже <!FORMAT='РУССКИЙ ТЕКСТ'>
2 и 3 путь не подходят, если в формате есть символы нелокализованного языка, и тогда только 1-м путем или записать text в UTF8 добавив !

Признаю это недоработка документации.
Мы сейчас заняты ее уточнением и расширением примерами.
Кроме обсуждаемой детали есть дополнительные форматы unifor используемые только WEB ИРБИС для перекодировок.
В ближайшее время мы выставим в открытый доступ обновленную документацию.

Кроме того планируем ввести поддержку команды записи в БД ***R
Скорее всего несколько изменится идеалогоия (see WEB IRBIS32)
этой команды, чтобы сделать ее групповой.
В этом случае можно будет вести что-то вроде подписки на рассылку или заказываемую литературу (как минимум 2 задачи).
Именно в этом ракурсе я и спрашивал о Ваших пожеланиях - нужны идеи - техническая часть не проблема.

Re: Веб-64. Проблемы с кодировками.
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 18, February, 2005 12:23

Так а о каких идеях идет речь? О резличных сервисах? Так вы дайте мне инструмент и я все возникающие идеи реализую сам :). Рассылка и заказываемая литература всего-лишь сервисы, реализованые на команде ***R***.
"...Скорее всего несколько изменится идеалогоия (see WEB IRBIS32)
этой команды, чтобы сделать ее групповой...." - что значит ГРУППОВОЙ? Я как-то не понимаю смысл :(. Хотя мне и требовалось иногда добавить не одну запись, а несколько :)...

Re: Веб-64. Проблемы с кодировками.
Пользователь: Constantin (IP-адрес скрыт)
Дата: 18, February, 2005 15:23

Как ты сделал рассылку, если не секрет?

Re: Веб-64. Проблемы с кодировками.
Пользователь: Панев Максим (IP-адрес скрыт)
Дата: 18, February, 2005 18:46

Не секрет :)... она у меня пока не в Ирбисе :), а ручная... Кстати, а как ты хочешь ее в Ирбисе реализовать? Можно только базу завести и в нее всех желающих скидывать. А вот чтобы веб-ирбис еще и сам рассылал по расписанию - это уже никак.
Хотя если подумать, то если сервис запущен (да хоть как, главное, что сервер рабоает постоянно), то можно ему задания составлять, а в задании указывать к примеру, что сделать. Можно запустить веб-ирбис с параметрами, можно запустить приложение, а в парамерах ему передать что-то. Это что-то лучше формировать форматом и все такое. Кароче идей море, главное конечную задачу поставить, а там уж сам.
Сейчас у меня на Ирбис только регистрация на конференцию и служба "Спроси библиотекаря". Это очень даже ключевые моменты на нашем сайте, так что мне бы команду ***R очень надо...



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.