php soap客户端中特殊字符的问题

php soap客户端中特殊字符的问题,php,soap,encoding,character-encoding,Php,Soap,Encoding,Character Encoding,我有一个问题与你有关。我有一个web服务也使用php返回一些名称。当其中任何一个包含瑞典字符å、ä或ö以及其他可能的字符时,我得到一个soapfault,看起来我们没有XML文档。但是,我可以使用$soapcalo->\uu getLastResponse查看完整正确的afaik响应 如何处理特殊字符?我尝试在客户端和服务器上添加编码属性utf-8,但没有成功 编辑:soap回复的摘录: <?xml version="1.0" encoding="UTF-8"?> <SOAP

我有一个问题与你有关。我有一个web服务也使用php返回一些名称。当其中任何一个包含瑞典字符å、ä或ö以及其他可能的字符时,我得到一个soapfault,看起来我们没有XML文档。但是,我可以使用$soapcalo->\uu getLastResponse查看完整正确的afaik响应

如何处理特殊字符?我尝试在客户端和服务器上添加编码属性utf-8,但没有成功

编辑:soap回复的摘录:

<?xml version="1.0" encoding="UTF-8"?>
 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="...">
 <SOAP-ENV:Body>
  <ns1:callFunctionResponse>
   <ns1:Response>
    <ns1:result>success</ns1:result>
    <ns1:content>
     <Contact>
      <userName>VIB09SLA9EP</userName>
      <firstName>Patrik</firstName>
      <lastName>Stenstr&ouml;m</lastName>
     </Contact>
    </ns1:content>
   </ns1:Response>
  </ns1:callFunctionResponse>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

谢谢

不确定这是否有帮助,但可能会调查一下

不确定这是否有帮助,但可能会调查一下

只是一个猜测:你确定这些名字实际上是utf-8编码的吗?我认为仅仅设置SOAP属性不会改变值的实际编码。在通过SOAP返回名称之前,您是否尝试过使用这些名称?

只是一个猜测:您是否确保这些名称实际上是utf-8编码的?我认为仅仅设置SOAP属性不会改变值的实际编码。在通过SOAP返回名称之前,您是否尝试过使用这些名称?

SOAP服务器是基于Windows的服务器吗?我注意到,有时基于Windows的服务器或应用程序不会发送UTF-8,而是发送进来

在一个应用程序中,我的编码中有特殊字符,我只需在HTML输出上运行以下代码:

<?php
print htmlentities($string, ENT_COMPAT, 'cp1252');

确保为HTML输出编码了任何特殊字符。

SOAP服务器是基于Windows的服务器吗?我注意到,有时基于Windows的服务器或应用程序不会发送UTF-8,而是发送进来

在一个应用程序中,我的编码中有特殊字符,我只需在HTML输出上运行以下代码:

<?php
print htmlentities($string, ENT_COMPAT, 'cp1252');

确保为HTML输出对任何特殊字符进行编码。

好的,每个人-问题终于解决了,我想我会把它贴在这里给其他有类似问题的人。事实证明,问题发生在过程的早期

SOAP回复的内容是使用DomDocument构建结构生成的。后来,它使用saveHTML函数保存。事实证明,该函数添加了一些HTML编码,打破了客户端上的soap解码

当使用saveXML函数时,在添加标记和其他奇怪的东西时,应答也会成功通过,soap客户端也会将应答解码为正确的字符串

我希望这就是结局,但你永远不知道:

感谢所有的帮助和+1帮助检查正确的位置


/维克多

好了,大家好——问题终于解决了,我想我会把它贴在这里给其他有类似问题的人看。事实证明,问题发生在过程的早期

SOAP回复的内容是使用DomDocument构建结构生成的。后来,它使用saveHTML函数保存。事实证明,该函数添加了一些HTML编码,打破了客户端上的soap解码

当使用saveXML函数时,在添加标记和其他奇怪的东西时,应答也会成功通过,soap客户端也会将应答解码为正确的字符串

我希望这就是结局,但你永远不知道:

感谢所有的帮助和+1帮助检查正确的位置


/维克托

因为我在谷歌搜索“SoapClient没有正确解码utf8数据”时第一次碰到了这个问题

我的问题是,管道中的UTF-8编码的特殊字符和php SoapClient没有正确解码它们


通过将我的类中的php文件的编码改为UTF-8,修复了这个问题。

因为我在谷歌搜索“SoapClient无法正确解码utf8数据”时第一次遇到了这个问题

我的问题是,管道中的UTF-8编码的特殊字符和php SoapClient没有正确解码它们


通过将我的类中的php文件的编码更改为UTF-8,修复了这个问题。

您能给我们SOAP响应的第一行吗?由于SOAP是XML,一旦您在服务器上正确添加了UTF-8,响应XML就会告诉您它是UTF-8。如果XML被剪切为ISO-8859-1,但实际上包含UTF-8,那么您就会遇到问题。您能给我们SOAP响应的第一行吗?由于SOAP是XML,一旦您在服务器上正确添加了UTF-8,响应XML就会告诉您它是UTF-8。如果XML被剪切为ISO-8859-1,但实际上包含UTF-8,您就会遇到问题。谢谢。我想这是可能的编码一切å,ä和ötoåä;和ö;分别,但这真的不应该是必要的。编辑到上面:原来是å;etc编码实际上是首先破坏解码的东西!洗肥皂时不要这样做谢谢我想这是可能的
把一切都编码成字母、字母和字母åä;和ö;分别,但这真的不应该是必要的。编辑到上面:原来是å;etc编码实际上是首先破坏解码的东西!洗肥皂时不要这样做我现在有了:不幸的是,这没有任何区别,而且服务器端的文本文件日志基本都是utf-8格式的,所以看起来一切正常。ThanksI现在有了:不幸的是,这并没有任何区别,而且服务器端的文本文件日志基本都是utf-8格式的,所以看起来一切正常。谢谢,我真的不明白你的意思。。。问题是,我只能访问通过uu getLastResponse返回的真实数据——访问它通常只会得到SOAP错误。但是要回答这个问题-是的,soap服务器在windows机器上运行。我真的不明白你的意思。。。问题是,我只能访问通过uu getLastResponse返回的真实数据——访问它通常只会得到SOAP错误。但是要回答这个问题-是的,soap服务器在windows机器上运行。嗨,我不太清楚你是如何解决这个问题的。因为我正面临着这个问题。请您发布一些详细的代码好吗?对我来说,saveHTML添加了额外的编码,这打破了soap编码,当我改为saveXML时,我得到了原始编码,然后可以正确处理。不过,也请查看其他回复,对您的情况可能会有帮助。嗨,我不太清楚您是如何解决这个问题的。因为我正面临着这个问题。请您发布一些详细的代码好吗?对我来说,saveHTML添加了额外的编码,这打破了soap编码,当我改为saveXML时,我得到了原始编码,然后可以正确处理。同时检查其他回复,这对您的情况可能会有帮助。