WordProcessingML Encoding UTF-8 ou ISO-8859-1

Bom dia pessoal!!!

É o seguinte:

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???

Alguém tem idéia???

Muito obrigada! :slight_smile:

Ja leu esse aqui? :slight_smile:

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:

<?xml version="1.0" encoding="ISO-8859-1"?>

ou assim:

<?xml version="1.0" encoding="UTF-8"?>

o resto do arquivo é idêntico.

Não faço idéia do que está dando errado…

Obrigada por qualquer ajuda!!!

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?

Pessoal,

Resolvi o problema (pelo menos temporariamente…) trocando encoding de UTF-8 para windows-1252 !!
então ficou assim:

<?xml version="1.0" encoding="windows-1252"?>

Abraços!!!

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 :?

Oi!
Estou usando:
BufferedReader leitorTexto = new BufferedReader(new FileReader(arquivoXML));

BufferedWriter escritorTexto = new BufferedWriter(new FileWriter(arquivoDoc));

Bom, teoricamente o sistema está sendo feito para windows mesmo pq vão utilizar o word. Inclusive Terminando de criar o arquivo dou o comando:

Runtime.getRuntime().exec(“rundll32 SHELL32.DLL,ShellExec_RunDLL “+arquivoDoc.toString().replace(”\”,"/"));

Para já abrir o word com o arquivo criado.

Mas o que acontece com Writer/OutputStream e XML?

Obrigada :slight_smile:

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:

http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileWriter.html

Seguindo suas instruções, fiz assim agora:

BufferedWriter escritorTexto = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(arquivoDoc),“UTF-8”));

e FUNCIONOUUUU!!! Agora o arquivo está sendo gerado com encoding UTF-8 e o word abre sem problemas!!! :smiley:

hehehe!!!

Valeu mesmo!!! Aprendi bastante!