Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

SOAP::Lite i problem z kodowaniem

23 views
Skip to first unread message

Giz

unread,
Aug 1, 2013, 4:38:08 AM8/1/13
to
Witam,

Mam problem z SOAP::Lite
Wysyłam po przez niego dane na pewien serwer i niestety ale polskie znaki
błędnie docierają.

Tekst wcześniej przygotowuje w kodowaniu utf-8 ale także próbowałem w
ISO-8859-2
i odpowiednio ustawiam encoding poniżej

my $client=SOAP::Lite -> proxy($host)->encoding('UTF-8');

Jednak cały czas wynik po drugiej stronie dociera w nieprawidłowy sposób.
Także przechwytując wysyłane dane widzę, że jest źle kodowane.

Gdy wysyłam jako UTF-8 to w podglądzie widzę ewidetnie jakby dane były
niepotrzebnie jeszcze raz zamieniane na UTF-8
(dane wychodzą podwójnie zakodowane)



Szukałem więc w cpan informacji czy ktoś zgłaszał jakieś błędy o tym i
znalazłem temat #73802.
Ktoś wspomina o błędzie w SOAP::Transport::HTTP w lini 205

$envelope = Encode::encode('UTF-8', $envelope);
i poprawił na
$envelope = Encode::encode($encoding, $envelope);

I w nowych wersjach SOAP::Lite widać tą poprawkę ale to i tak nie naprawia
mojego błędu
W moim przypadku wydaje się, że pomaga dopiero całe usunięcie tej lini bo z
tym to niepotrzebnie koduje jeszcze raz.

Może ktoś to ocenić i powiedzieć czy to ja coś źle robie czy to
najwidoczniej błąd w SOAP::Lite?


Miałem wersje 0.714
obecnie 1.02 i bez zmian

Pozdr
G

Stachu 'Dozzie' K.

unread,
Aug 1, 2013, 5:08:40 AM8/1/13
to
On 2013-08-01, Giz <g...@nospam.pl> wrote:
> Mam problem z SOAP::Lite
> Wysyłam po przez niego dane na pewien serwer i niestety ale polskie znaki
> błędnie docierają.
>
> Tekst wcześniej przygotowuje w kodowaniu utf-8 ale także próbowałem w
> ISO-8859-2
> i odpowiednio ustawiam encoding poniżej
>
> my $client=SOAP::Lite -> proxy($host)->encoding('UTF-8');
>
> Jednak cały czas wynik po drugiej stronie dociera w nieprawidłowy sposób.
> Także przechwytując wysyłane dane widzę, że jest źle kodowane.
>
> Gdy wysyłam jako UTF-8 to w podglądzie widzę ewidetnie jakby dane były
> niepotrzebnie jeszcze raz zamieniane na UTF-8
> (dane wychodzą podwójnie zakodowane)

A co przekazujesz do SOAP::Lite? Bajtstringi czy tekst w wewnętrznym
kodowaniu Perla? (To znaczy: używasz pragmy encoding?)
#v+
$ perl -mencoding=utf8 -e '$char = substr "ą", 0, 1; $code = ord $char; printf "0x%02x\n", $code'
0x105
$ perl -e '$char = substr "ą", 0, 1; $code = ord $char; printf "0x%02x\n", $code'
0xc4
#v-

--
Secunia non olet.
Stanislaw Klekot

Giz

unread,
Aug 1, 2013, 5:36:13 AM8/1/13
to
> A co przekazujesz do SOAP::Lite? Bajtstringi czy tekst w wewnętrznym
> kodowaniu Perla? (To znaczy: używasz pragmy encoding?)
> #v+
> $ perl -mencoding=utf8 -e '$char = substr "ą", 0, 1; $code = ord $char;
> printf "0x%02x\n", $code'
> 0x105
> $ perl -e '$char = substr "ą", 0, 1; $code = ord $char; printf "0x%02x\n",
> $code'
> 0xc4
> #v-
> --
> Secunia non olet.
> Stanislaw Klekot

Nieznam się zbytnio na tym o czym piszesz.

Poniżej wklejam wynik tego co podałeś

$ perl -mencoding=utf8 -e '$char = substr "ą", 0, 1; $code = ord $char;
printf "0x%02x\n", $code'
Malformed UTF-8 character (unexpected continuation byte 0xb1, with no
preceding start byte) at -e line 1.
0x00
$ perl -e '$char = substr "ą", 0, 1; $code = ord $char; printf "0x%02x\n",
$code'
0xb1

Pozdr
G

Stachu 'Dozzie' K.

unread,
Aug 1, 2013, 5:51:35 AM8/1/13
to
On 2013-08-01, Giz <g...@nospam.pl> wrote:
>> A co przekazujesz do SOAP::Lite? Bajtstringi czy tekst w wewnętrznym
>> kodowaniu Perla? (To znaczy: używasz pragmy encoding?)
>> #v+
>> $ perl -mencoding=utf8 -e '$char = substr "ą", 0, 1; $code = ord $char;
>> printf "0x%02x\n", $code'
>> 0x105
>> $ perl -e '$char = substr "ą", 0, 1; $code = ord $char; printf "0x%02x\n",
>> $code'
>> 0xc4
>> #v-

> Nieznam się zbytnio na tym o czym piszesz.
>
> Poniżej wklejam wynik tego co podałeś

Na programowaniu zapewne też niespecjalnie, sądząc po wklejce. To nie
było pytanie, tylko podpowiedź.
A "nie znam się" pisze się rozdzielnie.

> $ perl -mencoding=utf8 -e '$char = substr "ą", 0, 1; $code = ord $char;
> printf "0x%02x\n", $code'
> Malformed UTF-8 character (unexpected continuation byte 0xb1, with no
> preceding start byte) at -e line 1.
> 0x00
> $ perl -e '$char = substr "ą", 0, 1; $code = ord $char; printf "0x%02x\n",
> $code'
> 0xb1

Giz

unread,
Aug 1, 2013, 12:19:19 PM8/1/13
to
>> Nieznam siďż˝ zbytnio na tym o czym piszesz.
> Na programowaniu zapewne te� niespecjalnie, s�dz�c po wklejce.

Tak tak, pewnie masz racje. Ale to nie by�o mi�e.

Do SOAP::Lite wk�adam dane jak poni�ej:

my $nasztekst='���󳿟��';
my $client=SOAP::Lite -> proxy($host)->encoding('ISO-8859-2');
$som=$client->call('NazwaFunkcji',SOAP::Data->name('tekst') ->value(
"$nasztekst" ));

pozdr
G

Stachu 'Dozzie' K.

unread,
Aug 2, 2013, 4:42:46 AM8/2/13
to
On 2013-08-01, Giz <g...@nospam.pl> wrote:
>>> Nieznam się zbytnio na tym o czym piszesz.
>> Na programowaniu zapewne też niespecjalnie, sądząc po wklejce.
>
> Tak tak, pewnie masz racje. Ale to nie było miłe.

Internetsy nie są miłym miejscem. Możesz spotkać buraków takich jak ja.

> Do SOAP::Lite wkładam dane jak poniżej:
>
> my $nasztekst='ąśćółżźćń';
> my $client=SOAP::Lite -> proxy($host)->encoding('ISO-8859-2');
> $som=$client->call('NazwaFunkcji',SOAP::Data->name('tekst') ->value(
> "$nasztekst" ));

Ponawiam pytanie sprzed dwóch postów: używasz pragmy encoding?

karraso

unread,
Aug 5, 2013, 4:12:09 PM8/5/13
to

> Internetsy nie są miłym miejscem. Możesz spotkać buraków takich jak ja.
>
Potwierdzam
Stachu nie jest miłym osobnikiem :)

wozniak grzegorz

unread,
Aug 8, 2013, 4:52:03 AM8/8/13
to
Giz wrote:

>
> Do SOAP::Lite wkładam dane jak poniżej:
Stacho miał na myśli dopisanie:
use encoding "utf8";
#właśnie tutaj ;)
> my $nasztekst='ąśćółżźćń';


--
Pozdrawiam
Grzegorz Woźniak
xmpp:skinek_at_jabster_pl


0 new messages