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

Webservice i PL-literki, nie bangla

177 views
Skip to first unread message

Miroo

unread,
Oct 29, 2009, 3:59:19 AM10/29/09
to
Witam
W swojej aplikacji korzystam z 2 serwer�w webservice i na jednym z nich nie
dzia�aj� mi polskie litery w parametrach zwrotnych. Zamiast polskiej literki
otrzymujďż˝ dwa znaki zapytania "??".
Klasy do obs�ugi tych webservice zosta�y wygenerowane automatycznie (Add Web
Reference), request i response zakodowane sďż˝ w UTF-8 i posiadajďż˝ wpis
"encoding" w nag��wku XML.

Response z tych dw�ch webservice r�ni� si� deklaracj� typu parametru, t.j.:

Tu nie ma problemu z literkami:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<TestResponse xmlns="MY_WS"><TestResult>tu tekst z PL
literkami</TestResult></TestResponse>
</soap:Body>
</soap:Envelope>

A tu dostajďż˝ znaki zapytania:
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body
SOAP-ENC:encodingStyle="http://schemas.xmlsoap.org/soap/envelope/">
<NS1:TestResponse xmlns:NS1="urn:MyWs">
<TestParam xsi:type="xsd:string">tu tekst z PL literkami</TestParam>
</NS1:TestResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Tam gdzie parametr jest "typowany" (xsi:type="xsd:string") wygl�da jakby
klient konwertowaďż˝ parametr na string z ASCII zamiast z UTF-8.
Co mog� z tym zrobi�, �eby dzia�a�o prawid�owo?

Korzystam z VS 2005

--
Pozdrawiam
Miroo

Marcin Kral

unread,
Oct 29, 2009, 6:21:51 PM10/29/09
to
W dniu 2009-10-29 08:59, Miroo pisze:

> Witam
> W swojej aplikacji korzystam z 2 serwer�w webservice i na jednym z nich
> nie dzia�aj� mi polskie litery w parametrach zwrotnych. Zamiast polskiej
> literki otrzymujďż˝ dwa znaki zapytania "??".
> Klasy do obs�ugi tych webservice zosta�y wygenerowane automatycznie (Add
> Web Reference), request i response zakodowane sďż˝ w UTF-8 i posiadajďż˝
> wpis "encoding" w nag��wku XML.

Upewnij sie jakims snifferem, czy to co przychodzi jest na pewno w
UTF-8. Nigdy nie mialem problemow przy komunikacji .NET <-> .NET. Za to
zdarzalo sie przy .NET <-> Delphi, itp. kombinacjach.

--
Pozdrawiam
Marcin Kral

Miroo

unread,
Oct 30, 2009, 3:37:55 AM10/30/09
to
U�ytkownik "Marcin Kral" <kr...@poczta.na-onecie.pl> napisa� w wiadomo�ci
news:hcd4i2$hc3$1...@inews.gazeta.pl...

To co przychodzi jest na pewno w UTF-8, wyniki ze sniffera wklei�em, ale bez
PL znak�w, �eby krzak�w nie by�o. Po��czenie jest pomi�dzy klientem w C# a
webservice napisanym w Delphi.

--
Pozdrawiam
Miroo

Marcin Kral

unread,
Oct 30, 2009, 3:24:19 PM10/30/09
to
W dniu 2009-10-30 08:37, Miroo pisze:

> U�ytkownik "Marcin Kral" <kr...@poczta.na-onecie.pl> napisa� w
> wiadomo�ci news:hcd4i2$hc3$1...@inews.gazeta.pl...
>> Upewnij sie jakims snifferem, czy to co przychodzi jest na pewno w
>> UTF-8. Nigdy nie mialem problemow przy komunikacji .NET <-> .NET. Za
>> to zdarzalo sie przy .NET <-> Delphi, itp. kombinacjach.
>
> To co przychodzi jest na pewno w UTF-8, wyniki ze sniffera wklei�em, ale
> bez PL znak�w, �eby krzak�w nie by�o. Po��czenie jest pomi�dzy klientem
> w C# a webservice napisanym w Delphi.

Ja mialem odwrotna sytuacje, i to Delphi zle kodowalo. Dlatego upewnie
sie jeszcze, w snifferze pl-litery widzisz kodowane na co najmniej dwoch
bajtach?

Za��� g�l� ja�� zakodowane w UTF-8 wygl�da tak:

Z a ďż˝ ďż˝ ďż˝ ďż˝ ďż˝ ďż˝ ďż˝ ďż˝ g ďż˝ ďż˝ ďż˝ ďż˝ l ďż˝ ďż˝ j a ďż˝ ďż˝
5a 61 c5 bc c3 b3 c5 82 c4 87 20 67 c4 99 c5 9b 6c c4 85 20 6a 61 c5 ba
ďż˝ ďż˝
c5 84

Obstawiam Delphi :-)
--
Pozdrawiam
Marcin Kral


Miroo

unread,
Nov 2, 2009, 3:15:33 AM11/2/09
to
U�ytkownik "Marcin Kral" <kr...@poczta.na-onecie.pl> napisa� w wiadomo�ci
news:hcfeh6$ln9$1...@inews.gazeta.pl...

> W dniu 2009-10-30 08:37, Miroo pisze:
>> U�ytkownik "Marcin Kral" <kr...@poczta.na-onecie.pl> napisa� w
>> wiadomo�ci news:hcd4i2$hc3$1...@inews.gazeta.pl...
>>> Upewnij sie jakims snifferem, czy to co przychodzi jest na pewno w
>>> UTF-8. Nigdy nie mialem problemow przy komunikacji .NET <-> .NET. Za
>>> to zdarzalo sie przy .NET <-> Delphi, itp. kombinacjach.
>>
>> To co przychodzi jest na pewno w UTF-8, wyniki ze sniffera wklei�em, ale
>> bez PL znak�w, �eby krzak�w nie by�o. Po��czenie jest pomi�dzy klientem
>> w C# a webservice napisanym w Delphi.
>
> Ja mialem odwrotna sytuacje, i to Delphi zle kodowalo. Dlatego upewnie sie
> jeszcze, w snifferze pl-litery widzisz kodowane na co najmniej dwoch
> bajtach?

Moim zdaniem kodowanie jest ok, w obu przypadkach litera "ďż˝" to $C4$85.
Moim zdaniem .NET nie wie co robiďż˝ z deklaracjďż˝ xsi:type="xsd:string"
a ja nie wiem jak mu powiedzieďż˝ co ma z tym robiďż˝.
Delphiowi klienci tego webservice nie maj� problem�w z kodowaniem.

--
Pozdrawiam
Miroo

Marcin Kral

unread,
Nov 2, 2009, 5:10:03 PM11/2/09
to
W dniu 2009-11-02 09:15, Miroo pisze:

> U�ytkownik "Marcin Kral" <kr...@poczta.na-onecie.pl> napisa� w
> wiadomo�ci news:hcfeh6$ln9$1...@inews.gazeta.pl...

>>
>> Ja mialem odwrotna sytuacje, i to Delphi zle kodowalo. Dlatego upewnie
>> sie jeszcze, w snifferze pl-litery widzisz kodowane na co najmniej
>> dwoch bajtach?
>
> Moim zdaniem kodowanie jest ok, w obu przypadkach litera "ďż˝" to $C4$85.
> Moim zdaniem .NET nie wie co robiďż˝ z deklaracjďż˝ xsi:type="xsd:string"
> a ja nie wiem jak mu powiedzieďż˝ co ma z tym robiďż˝.
> Delphiowi klienci tego webservice nie maj� problem�w z kodowaniem.

Sprawdz czy serwer w naglowkach HTTP (content-type: charset) nie ustawia
innego kodowania. Byc moze ustawienie tego na utf-8 pomoze?
W ekstremalnym przypadku mozesz sobie poprzeciazac GetReaderForMessage,
czy GetWebResponse dla Twojego obiektu proxy ale to chyba jak z armata
na muche :-)

--
Pozdrawiam
Marcin Kral


Miroo

unread,
Nov 3, 2009, 5:12:25 AM11/3/09
to
U�ytkownik "Marcin Kral" <kr...@poczta.na-onecie.pl> napisa� w wiadomo�ci
news:hcnlbt$l50$1...@inews.gazeta.pl...

Serwer w nag�owkach HTTP nie zwraca kodowania, w nag�owku response jest
tylko
Content-Type: text/xml
Jak na IIS 6.0 zrobiďż˝ z tego:
Content-Type: text/xml; charset=utf-8
?
A mo�e to zale�y od ustawie� delphiowej aplikacji webservice, a nie
webservera?

Dzi�ki uprzejmo�ci kolegi maj�cego VS2008 zrobi�em testy na .NET 3.5
Wynik jest taki:
- je�li klas� klienta wygeneruj� analogicznie jak w VS2005, czyli poprzez
"Add Web Reference" wynik jest taki sam, czyli brak PL znak�w.
- jesli klasďż˝ klienta wygenerujďż˝ poprzez "Add Service Reference" polskie
litery sďż˝.
Wygl�da na to, �e to kwestia interpretacji wyniku (response jest identyczny
w obu przypadkach), aczkolwiek nie wykluczam, �e zmiana ustawie� serwera
mog�aby pom�c w pierwszym przypadku. Tylko nie wiem co i jak zmieni�.

--
Pozdrawiam
Miroo

Miroo

unread,
Nov 3, 2009, 7:21:23 AM11/3/09
to
U�ytkownik "Miroo" <mir...@REMOVEIT.o2.pl> napisa� w wiadomo�ci
news:hcovqt$a0e$1...@atlantis.news.neostrada.pl...

> U�ytkownik "Marcin Kral" <kr...@poczta.na-onecie.pl> napisa� w wiadomo�ci
> news:hcnlbt$l50$1...@inews.gazeta.pl...
>> W dniu 2009-11-02 09:15, Miroo pisze:
>>> U�ytkownik "Marcin Kral" <kr...@poczta.na-onecie.pl> napisa� w
>>> wiadomo�ci news:hcfeh6$ln9$1...@inews.gazeta.pl...
>>>>
>>>> Ja mialem odwrotna sytuacje, i to Delphi zle kodowalo. Dlatego upewnie
>>>> sie jeszcze, w snifferze pl-litery widzisz kodowane na co najmniej
>>>> dwoch bajtach?
>>>
>>> Moim zdaniem kodowanie jest ok, w obu przypadkach litera "ďż˝" to $C4$85.
>>> Moim zdaniem .NET nie wie co robiďż˝ z deklaracjďż˝ xsi:type="xsd:string"
>>> a ja nie wiem jak mu powiedzieďż˝ co ma z tym robiďż˝.
>>> Delphiowi klienci tego webservice nie maj� problem�w z kodowaniem.
>>
>> Sprawdz czy serwer w naglowkach HTTP (content-type: charset) nie ustawia
>> innego kodowania. Byc moze ustawienie tego na utf-8 pomoze?

Mahomet poszed� do G�ry i G�ra ustawi� utf-8 w nag��wku HTTP webservice:
Content-Type: text/xml; charset=utf-8

Teraz dzia�a :)
Dzi�kuj� za pomoc.

--
Pozdrawiam
Miroo

0 new messages