Tenho um arquivo XML do word 2003 (Arquivo doc SaveAs XML).
Estou lendo esse arquivo e dando em replace em alguns pontos chaves e depois salvando o arquivo. Isto tudo ele faz. O meu problema é o encoding.
Qdo gero o arquivo com encoding ISO-8859-1, o word abre o arquivo só que não mostra o caracter €, no lugar aparece um quadrado.
Qdo gero o arquivo com o encoding UTF-8 o word não abre o arquivo dizendo que existe erro na linha X coluna X que indica justamente o caracter €.
Se eu pego o arquivo xml gerado com ISO-8859-1 abro e troco o encoding para UTF-8 fecho e mando abrir com o word ele funciona e mostra o caracter.
Pelo que li, o encoding ISO-8859-1 não mostra o caracter pq não possui, eu teria que usar realmente o UTF-8 que possui o caracter do euro.
Como quero um processo automático (não quero gerar com ISO, ter que abrir o arquivo mudar o encoding, salvar para poder abrir corretamente com o word), eu teria que gerar pelo java o arquivo com encoding UTF-8. Entao porque dá erro???
O artigo é bom, mas fala o que eu já sabia: preciso usar UTF-8.
Só que este é o problema, quando gero o arquivo com UTF-8 o word não abre, diz que tem erro no caracter que representa o Euro (€).
O XML está correto, o símbolo do euro aparece. Mas quando vou abrir com o word dá o erro.
Como gerando este XML com encoding ISO-8859-1, abrindo em formato TXT e alterando a o encoding para UTF-8, funciona perfeitamente no word, me parece que o problema está em o Java gerar este XML com encoding UTF-8.
O arquivo gerado com ISO é idêntico ao gerado com UTF a não ser pela primeira linha, que está assim:
Posso dar uma olhada no codigo Java que vc esta usando pra gerar o XML, especificamente na parte onde vc especifica o encoding? Que APIs vc esta usando?
Ana, vc esta escrevendo o XML com um Writer/OutputStream configurado pra cuspir coisas no encoding padrao, entao… cuidado demaaaaaaais com isso, entao, pq assim que forem rodar esse treco num linux ou mac, ferrou :?
OutputStreams tratam os dados como binario, e nao fazem conversao nenhuma, mas os Writers sim - e a coisa pega justamente aih: se vc nao disser pro Writer qual encoding vc quer usar, ele vai usar o padrao da plataforma que vc estiver usando, o que sempre da alguma zica do genero. De uma olhada: