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
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
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
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
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
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
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
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