具有特殊字符的PHP SOAP客户端(编码)?

时间:2012-09-23 14:06:01

标签: php soap encoding special-characters soap-client

我正在尝试使用PHP的SOAP客户端。这很好,因为我只是知道它。但是当Data contains Special Character内部存在问题时。

  • 内部有之类的特殊字符。 (它在数据中以十六进制代码出现。)

以下是样本:

header('Content-Type: text/plain; charset=UTF-8');
$client = new SoapClient('http://www.example.com/webservice.asmx?WSDL', array('trace' => 1, 'encoding'=>'UTF-8'));

$result_1 = $client->GetText();
$result_2 = $client->GetText_withSpecialCharacter(); //Data contains `` hex-code (♫ Special Character)

var_dump($result_1);
var_dump($result_2);
  • 始终正确<{1}}
  • 但是,从不获得$result_1(它总是返回BLANK)

请建议我该怎么办?

4 个答案:

答案 0 :(得分:1)

您可以尝试将编码设置为UTF-8

示例

$client = new SoapClient('http://www.example.com/webservice.asmx?WSDL', array('trace' => 1, 'encoding'=>' UTF-8'));

答案 1 :(得分:0)

尝试

 $result_1 = urldecode($client->GetText());
 $result_2 = urldecode($client->GetText_withSpecialCharacter()); 

答案 2 :(得分:0)

也许你可以试试这个:

$myString = $client->GetText_withSpecialCharacter();
$result_2 = urldecode($myString);
if ($myString != urlencode($result_2)) {
  $result_2 = mb_convert_encoding($myString, "UTF-8", mb_detect_encoding($myString,"auto",true));
}

答案 3 :(得分:0)

问题已经很久了,但有一个解决方案:

$result_2 = html_entity_decode($client->GetText_withSpecialCharacter(), ENT_QUOTES | ENT_XML1);

&#xE;似乎不是有效的UTF-8字符。 0xE是转出字符。