Acentuação usando XML RPC

imagem de samuelrbo

Eu estou com um problema de acentuação quando meu Web Service retorna uma mensagem para o cliente, e essa mensagem possui alguma palavra com acento. Verifiquei em alguns fóruns sobre esse tipo de problema com XML e todos informavam que era apenas problema no encoding do XML bastava passar de UTF-8 para ISO 8859-1, troquei o encoding e a acentuação continuou com o mesmo problema.
Alguem sabe o que posso fazer para solucionar esse problema?

Erro do XML com UTF-8:

  1. ---DATA---
  2. HTTP/1.0 200 OK
  3. Date: Mon, 13 Jul 2009 18:44:52 GMT
  4. Server: Apache
  5. X-Powered-By: PHP/5.2.9
  6. Content-Length: 342
  7. Content-Type: text/xml
  8. X-Cache: MISS from site.com.br
  9. Connection: close
  10.  
  11. <?xml version="1.0" encoding="UTF-8"?>
  12. <methodResponse>
  13. <fault>
  14.         <value>
  15.                 <struct>
  16.                         <member>
  17.                                 <name>faultCode</name>
  18.                                 <value><int>500</int></value>
  19.                         </member>
  20.                         <member>
  21.                                 <name>faultString</name>
  22.                                 <value><string>Erro: CPF inv&Atilde;&iexcl;lido!</string></value>
  23.                         </member>
  24.                 </struct>
  25.         </value>
  26. </fault>
  27. </methodResponse>
  28. ---END DATA---

O mesmo erro ocorre com encoding ISO 8859-1:

  1. ---DATA---
  2. HTTP/1.0 200 OK
  3. Date: Mon, 13 Jul 2009 18:48:38 GMT
  4. Server: Apache
  5. X-Powered-By: PHP/5.2.9
  6. Content-Length: 347
  7. Content-Type: text/xml
  8. X-Cache: MISS from site.com.br
  9. Connection: close
  10.  
  11. <?xml version="1.0" encoding="ISO-8859-1"?>
  12. <methodResponse>
  13. <fault>
  14.         <value>
  15.                 <struct>
  16.                         <member>
  17.                                 <name>faultCode</name>
  18.                                 <value><int>500</int></value>
  19.                         </member>
  20.                         <member>
  21.                                 <name>faultString</name>
  22.                                 <value><string>Erro: CPF inv&Atilde;&iexcl;lido!</string></value>
  23.                         </member>
  24.                 </struct>
  25.         </value>
  26. </fault>
  27. </methodResponse>
  28. ---END DATA---

Tentei tabém retirando o encoding e também não obtive sucesso =/.

Encontrei casos que as pessoas trocam as entidades de html para xml, mais como se trata de um web service teria ser tratado o retorno para novamente ser passado para html em cada cliente e eu não queria esse trabalho.

Se alguem souber alguma forma desde já agradeço.

Olá a todos, ja tive o mesmo

Olá a todos, ja tive o mesmo problema e resolvi usando o utf8_encode do php para converter os caracteres especiais.
Ai vai um exemplo;

$dom = new DOMDocument("1.0", "ISO-8859-1"); //versao 1.0 com encoding ISO-8859-1

$dados_do_produto = $dom->createElement("dados_do_produto",utf8_encode($return_xml[ 'dados_do_produto' ]));