Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вэб сервис и русский язык / 10 сообщений из 10, страница 1 из 1
11.12.2006, 05:30
    #34188930
Genk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
SQL Anywhere Personal Server Version 10.0.0.2465

Проблема: При использовании Вэб сервиса неправильно отображается
русский текст в броузере.

Создаю процедуру, которая формирует HTML код:

ALTER PROCEDURE "DBA"."lang"( )
result (html_doc long varchar)
BEGIN
declare res long varchar;
call dbo.sa_set_http_header( 'Content-Type', 'text/html; charset=Windows-1251');
set res = '<html>'
|| '<head><title>Lang</title></head>\n'
|| '<body> Russkij = Русский </body></html>';
select res;
RETURN;
END

Создаю Вэб сервис:
create service lang type 'raw' authorization off user dba secure off
as call lang( )

Запускаю сервер: dbeng10 -xs http(port=8080) c:\dir\b.db

Запускаю броузер с адресом: http://localhost:8080/b/lang

Результат в броузере: Russkij =

Из iSQL: select db_property('charset') и select connection_property('charset')
дают результат windows-1251. Пробовал менять кодировку на UTF-8, результат такой же.
Если в процедуре lang убрать call dbo.sa_set_http_header и вызвать ее из iSQL,
то русские символы отображаются правильно.

Хотелось бы получить совет, как действовать.
...
Рейтинг: 0 / 0
11.12.2006, 18:05
    #34191278
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
А если в браузере посмотреть источник странички?

---
http://www.rusug.ru] Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
12.12.2006, 10:34
    #34192345
Genk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
Результаты в браузерах (совпадают с источником страницы)
Mozilla Firefox: Russkij = (1A 1A 1A 1A 1A 1A 1A)
Opera совпадает с Firefox
MS IExplorer: Russkij = єёёъшщ (1A BA B8 B8 FA F8 F9)
...
Рейтинг: 0 / 0
12.12.2006, 12:18
    #34192777
Genk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
1) Если подготовить файл lang.sql, создающий Вэб сервис в кодировке cp1251
и затем создать этот сервис выполнением команды
dbisql -c "UID=DBA;PWD=sql;ENG=b;CHARSET=cp1251" lang.sql
то после вызова сервиса из браузера русские символы "абвгде"
отображаются:
IE6 - рстуф
Firefox, Opera -

2) Если скопировать lang.sql в окно Interactive SQL и затем выполнить, то
в IE6 русские символы отображаются правильно, а в Firefox и Opera
по-прежнему видны стрелки.

Во всех случаях кодировка в браузерах определяется автоматически
как Windows-1251.

Как это можно объяснить?
...
Рейтинг: 0 / 0
12.12.2006, 15:09
    #34193578
Yurk0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
Может отключить Character-set conversion
Тогда ,к примеру, в вашу процедуру добавить вызов:
call dbo.sa_set_http_option( 'CharsetConversion', 'OFF' );

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
ALTER PROCEDURE "DBA"."sp_hello_world"() /* [IN | OUT | INOUT] parameter_name parameter_type [DEFAULT default_value], ... */
result (html_doc long varchar)
BEGIN
declare res long varchar;
call dbo.sa_set_http_option( 'CharsetConversion', 'OFF' );
call dbo.sa_set_http_header( 'Content-Type', 'text/html; charset=Windows-1251');
set res = '<html>'
|| '<head><title>Lang</title></head>\n'
|| '<body> Russkij = Русский </body></html>';
select res;
end

На ASA 9.0.2 вроди работает...
...
Рейтинг: 0 / 0
12.12.2006, 16:10
    #34193856
Zetus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
На IQ ашипка:
ASA Error -939: Invalid setting for HTTP otion 'CharsetConversion'
какой аналог в IQ для CharsetConversion кто-то подскажет?
...
Рейтинг: 0 / 0
12.12.2006, 16:55
    #34194084
Yurk0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
ZetusASA Error -939: Invalid setting for HTTP otion 'CharsetConversion'
Если в InteractiveSQL выполнить:
Код: plaintext
call dbo.sa_set_http_option( 'CharsetConversion', 'OFF' );
или
Код: plaintext
call dba.lang()
то у меня появляется такая же ошыбка!

Но если в броузере открыть етот адрес - http://localhost:8080/b/lang
тогда результат - отличный!
...
Рейтинг: 0 / 0
12.12.2006, 17:10
    #34194159
Yurk0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
Наверное так и должно быть :)
из хелпа об процедуре sa_set_http_option:
ASA SQL Reference Use this procedure within statements or procedures that handle web services to set options within an HTTP result set
...
Рейтинг: 0 / 0
13.12.2006, 05:21
    #34195139
Genk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
Yurk0
Если в InteractiveSQL выполнить:
Код: plaintext
call dbo.sa_set_http_option( 'CharsetConversion', 'OFF' );
или
Код: plaintext
call dba.lang()
то у меня появляется такая же ошыбка!

Но если в броузере открыть етот адрес - http://localhost:8080/b/lang
тогда результат - отличный!

С выполнением или без выполнения
Код: plaintext
call dbo.sa_set_http_option( 'CharsetConversion', 'OFF' );

результат в IE6 правильный, а в Firefox и Opera - .
Выбор кодировки в браузерах правильный (Windows-1251).

Вопрос состоит в том, почему правильный результат только в IE6.
...
Рейтинг: 0 / 0
13.12.2006, 12:18
    #34196085
Yurk0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вэб сервис и русский язык
Genk
результат в IE6 правильный, а в Firefox и Opera - .

Странно, я в Opera и проверял ...с выполнением
Код: plaintext
call dbo.sa_set_http_option( 'CharsetConversion', 'OFF' );
результат правильный...
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Вэб сервис и русский язык / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]