Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > SOAP::Lite - не могу передать русский текст


Автор: Lvovich2011 1.11.2011, 13:33
Доброго времени суток!
Формирую SOAP-запрос, в котором есть тэг с русским текстом. SOAP самостоятельно русские буквы конвертирует не пойми во что:
Задаю: ШРН-Э-18.650.1
Отправляю, а сервер получает: ØÐÍ-Гќ-18.650.1

Вот код Perl
Код

$soap = SOAP::Lite -> proxy($my_proxy) -> on_action( sub { $my_action } );
$method = SOAP::Data->name('web:My_method') -> attr({'xmlns:web' => $my_nspace});
##параметры
$aaa="ШРН-Э-18.650.1";
@pars = (
    SOAP::Data->name('web:Login')->value($my_login),
    SOAP::Data->name('web:password')->value($my_password),
    SOAP::Data->name('web:Articul')->value($aaa)->type("string")
);
$som = $soap->call($method => @pars);


А вот, что получает сервер (это только фрагмент):

Код

<web:Articul xsi:type="xsd:string">ØÐÍ-Ý-18.650.1</web:Articul>


Помогите разобраться. где происходит перекодировка исходного параметра?
Что нужно сделать, чтобы русский текст передавался серверу без искажений?

Если нужны дополнительные данные по теме, то отвечу и предоставлю.

Автор: vadiml 1.11.2011, 17:16
Отправляйте и принимайте в utf8, возможно даже со сброшенным флагом utf8

Автор: Lvovich2011 2.11.2011, 18:57
vadiml, спасибо за совет - помог решить проблему.
Вот такой вариант работает:

Код

$soap = SOAP::Lite -> proxy($my_proxy) -> on_action( sub { $my_action } );
$method = SOAP::Data->name('web:My_method') -> attr({'xmlns:web' => $my_nspace});
##параметры
$aaa="ШРН-Э-18.650.1";
#################### новое!
Encode::from_to($aaa, 'windows-1251', 'utf-8');
Encode::_utf8_on($aaa);
####################
@pars = (
    SOAP::Data->name('web:Login')->value($my_login)->type("string"),   ##новое!
    SOAP::Data->name('web:password')->value($my_password),
    SOAP::Data->name('web:Articul')->value($aaa)->type("string")
);
$som = $soap->call($method => @pars);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)