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:
- ---DATA---
- HTTP/1.0 200 OK
- Date: Mon, 13 Jul 2009 18:44:52 GMT
- Server: Apache
- X-Powered-By: PHP/5.2.9
- Content-Length: 342
- Content-Type: text/xml
- X-Cache: MISS from site.com.br
- Connection: close
- <?xml version="1.0" encoding="UTF-8"?>
- <methodResponse>
- <fault>
- <value>
- <struct>
- <member>
- <name>faultCode</name>
- <value><int>500</int></value>
- </member>
- <member>
- <name>faultString</name>
- <value><string>Erro: CPF inválido!</string></value>
- </member>
- </struct>
- </value>
- </fault>
- </methodResponse>
- ---END DATA---
O mesmo erro ocorre com encoding ISO 8859-1:
- ---DATA---
- HTTP/1.0 200 OK
- Date: Mon, 13 Jul 2009 18:48:38 GMT
- Server: Apache
- X-Powered-By: PHP/5.2.9
- Content-Length: 347
- Content-Type: text/xml
- X-Cache: MISS from site.com.br
- Connection: close
- <?xml version="1.0" encoding="ISO-8859-1"?>
- <methodResponse>
- <fault>
- <value>
- <struct>
- <member>
- <name>faultCode</name>
- <value><int>500</int></value>
- </member>
- <member>
- <name>faultString</name>
- <value><string>Erro: CPF inválido!</string></value>
- </member>
- </struct>
- </value>
- </fault>
- </methodResponse>
- ---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' ]));