php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #38067 Parameters are not decoded from utf-8 when using encoding option
Submitted: 2006-07-11 15:42 UTC Modified: 2006-07-12 09:00 UTC
From: afalak at poczta dot onet dot pl Assigned: dmitry (profile)
Status: Closed Package: SOAP related
PHP Version: 5CVS-2006-07-11 (CVS) OS: Windows 2000
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: afalak at poczta dot onet dot pl
New email:
PHP Version: OS:

 

 [2006-07-11 15:42 UTC] afalak at poczta dot onet dot pl
Description:
------------
When encoding is set for both SoapClient and SoapServer (i.e.
ISO-8859-1) parameters are encoded properly to UTF-8 but not decoded on the other side.

Note: this error may be related to bug #38005 (SoapFault faultstring doesn't follow encoding rules) because before correction of this bug parameters were endoced/decoded properly, and now SoapFault parameters work fine but not method parameters.

Reproduce code:
---------------
[client]
<?php
$client = new SoapClient('a.wsdl'
		,array('encoding'	=> 'ISO-8859-1'));
$str = 'test: ?';
$res = $client->Test(array('str'=>$str));
?>

[server]
<?php
function Test($param) {
	file_put_contents('test.txt', $param->str);
	return 1;
}
$server = new SoapServer('a.wsdl'
		,array('encoding'	=> 'ISO-8859-1'));
$server->addFunction('Test');
$server->handle();
?>

[a.wsdl]
<?xml version="1.0" encoding="UTF-8"?>
<definitions
		xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
		xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
		xmlns:s="http://www.w3.org/2001/XMLSchema"
		xmlns:s0="http://test.pl"
		targetNamespace="http://test.pl"
		xmlns="http://schemas.xmlsoap.org/wsdl/"
>
	<types>
		<s:schema elementFormDefault="qualified"
targetNamespace="http://test.pl">
			<s:complexType name="Test">
				<s:attribute use="required" name="str" type="s:string"/>
			</s:complexType>
			<s:element type="s0:Test" name="Test"/>
			<s:element type="s:int" name="Ret"/>
		</s:schema>
	</types>

	<message name="TestSoapIn">
		<part name="parameters" element="s0:Test"/>
	</message>
	<message name="TestSoapOut">
		<part name="parameters" element="s0:Ret"/>
	</message>
	<portType name="TestSoap">
		<operation name="Test">
			<input message="s0:TestSoapIn"/>
			<output message="s0:TestSoapOut"/>
		</operation>
	</portType>
	<binding name="TestSoap" type="s0:TestSoap">
		<soap:binding transport="http://schemas.xmlsoap.org/soap/http"
style="document"/>
		<operation name="Test">
			<soap:operation soapAction="http:/Test/Test" style="document"/>
			<input>
				<soap:body use="literal"/>
			</input>
			<output>
				<soap:body use="literal"/>
			</output>
		</operation>
	</binding>
	<service name="Test">
		<port name="TestSoapPort" binding="s0:TestSoap">
			<soap:address location="http://localhost/server.php"/>
		</port>
	</service>
</definitions>

Expected result:
----------------
File text.txt shall contain exactly the same value as calling
parameter:

test: ?

Actual result:
--------------
Parameter isn't decoded from UTF-8:

test: &#258;?


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-07-12 09:00 UTC] dmitry@php.net
Ficed in CVS HEAD and PHP_5_2.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 14:01:29 2024 UTC