|
Posted by David Haynes on 07/03/06 13:47
Stephen wrote:
> David Haynes wote:
>> Stephen wrote:
>>> Stephen wote:
>>>> David Haynes wote:
>>>>> Stephen wrote:
>>>>>> I've got a problem with a PHP program that i've written using the
>>>>>> standard SOAP client with a WSDL file.
>>>>>> When calling one of the functions on the SOAP server i'm occasionally
>>>>>> receiving a response containing a pound sign encoded as £. This
>>>>>> causes my program to report 'Looks like we got no XML document' and not
>>>>>> process the response.
>>>>>> The SOAP server is provided by a third party and appears to be Perl
>>>>>> SOAPLite. They insist that the pound is being encoded correctly.
>>>>>>
>>>>>> I'm using PHP 5.1.4 from the command line running on Windows 2000.
>>>>>>
>>>>>>
>>>>>> Is there any way around this problem?
>>>>>>
>>>>>>
>>>>>> Thanks in advance,
>>>>>> Stephen
>>>>>>
>>>>> Stephen,
>>>>> Try using nuSOAP instead. I know it's a bit of a pain to switch, but I
>>>>> found nuSOAP works a little bit better with the perl SOAP implementation.
>>>>>
>>>>> -david-
>>>> Thanks. I'll give nuSOAP a try.
>>>>
>>>> regards,
>>>> Stephen
>>> I've had a go with nuSOAP and i'm still having no joy. The function
>>> call returns false when I try to bring back the request containing the
>>> pound sign.
>>>
>>> The offending line looks like this:
>>>
>>> <commentText xsi:type="xsd:string">this is a £ pound
>>> sign</commentText>
>>>
>>> The xml headers on the response file are:
>>>
>>> <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope
>>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>> xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
>>> xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
>>>
>>> regards,
>>> Stephen
>>>
>> A couple of things to try then:
>> 1. set encoding="iso-8859-1" instead of "UTF-8"
>> 2. encode your pound sign as &#A3; or £
>>
>> -david-
>
> The second option would work if I could persuade the provider of the
> SOAP server to change their code which is a no-goer unfortunately.
> Is there a way of encoding the pound sign within the WSDL file on the
> client side?
>
> regards,
> Stephen
>
Not that I know of but I am not a SOAP/WSDL expert.
Just so you know, this issue is not unique to PHP. There are a whack of
posts in the various Java and SOAP forums about this problem.
The consensus seems to be that £ is only supported under certain
character encoding schemes and that specifying the encoding to
iso-8859-1 seems to help providing that the SOAP parser honours the
encoding attribute.
[Back to original message]
|