Definir chartset de um arquivo [RESOLVIDO]

Bom Dia Galera,

Estou querendo criar um arquivos via código java, e criar esse arquivo definindo o charser dele como UTF-8.

Como faço isso???

Valew...

Bom dia, quando você for criar seu arquivo, no construtor do OutputStreamWriter você pode passar como paramêtro o charset desejado.

Um exemplo:

new BufferedWriter(new OutputStreamWriter(new FileOutputStream(txt_dirDestino.getText() + “\”+nome_arquivo), “Cp1252”));

Onde esta “Cp1252” você pode passar UTF-8

:wink:

Ei tentei implementar desse forma, + no windows ele não colocou com chartset default UTF-8, mas sim o defautl do windows.

Segue meu código:


FileOutputStream fos = new FileOutputStream(new File("teste.properties"));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8"));
StringBuffer sb = new StringBuffer();
sb.append("Teste");
pw.write(sb.toString());
out.flush();
out.close();

johnnylcon quem é pw ?

Tente assim por favor:

FileOutputStream fos = new FileOutputStream(new File("teste.properties")); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8")); StringBuffer sb = new StringBuffer(); sb.append("Teste"); out.write(sb.toString()); out.flush(); out.close();

fui uma falha minha na hora de fazer o post aqui no forum, eu fui simplificar o código aqui no fórum e nao troquei o nome da minha variavel.

mas no meu código fonte está certo, se não o eclipse acusaria erro.

aqui ele salva certinho, somente não força o chartser pra UTF-8,

será q tem alguma a ver com o OS (Windows) ???

Desculpe johnny, cometi um erro, a linha correta é assim:

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos,"UTF8"));

Não assim:

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8"));

Por favor teste desse jeito

Nao foi… deu na mesmo :frowning:

existe alguma outra forma???

johny como você sabe que não esta funcioanando corretamente?

Realizei um teste na minha maquina e funcionou corretamente.

pq, se eu abrir o meu arquivo.properties no browser e o browser estiver com o encoding UTF-8, os caracteres espciais ficam errado, apare uma ? no lugar deles, entao se eu mudo o encoding do browser para ISO- … , o arquivo eh exibido corretamente.

Johnny testa com essa classe aqui:

[code]import java.io.*;

public class WriteUTF8{

public static void main(String[] args)throws IOException{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter File name : ");

String str = in.readLine();

File file = new File(str);

if(!file.exists())

{

System.out.println(“File does not exist”);

  System.exit(0);

}

else

{

try{

BufferedWriter out = new BufferedWriter(new OutputStreamWriter
                             (new FileOutputStream(file),"UTF8"));

    out.write("é um UTF8 mesmo têm até ç na frase");

   out.close();

  System.out.println("Written Process Completed.");

 }

catch(UnsupportedEncodingException ue){

    System.out.println("Not supported : ");

  }

catch(IOException e){

 System.out.println(e.getMessage());

  }

}
}

}
[/code]

Para tal é so criar um arqvuivo txt e passar o nome dele como parametro na hora que for testar essa classe.

valew… seu exemplo funcionou, vou ver o que estou fazendo de errado e depois coloco o motivo aqui no forum.

Att.

Agora funcionou, o meu problema era o seguinte.

O meu código estava usando a classe PrinterWriter para criar arquivo, e também já escrevia nele, porém o PrinterWrite usa o padrão do SO, não dá para forçar um tipo de charset.

Mas com o exemplo que vc passou deu certo, eu crio o arquivo usando o FileOutputStream e depois uso o BufferedWriter.

Valew abaldove…

[quote=johnnylcon]
O meu código estava usando a classe PrinterWriter para criar arquivo, e também já escrevia nele, porém o PrinterWrite usa o padrão do SO, não dá para forçar um tipo de charset.[/quote]

Não é bem assim. Se fizer isto aqui (a partir do Java 5.0):

PrintWriter pw = new PrintWriter (new File ("HelloWorld.txt"), "ISO-8859-1");

você pode especificar o charset sem ter de usar um monte de encapsulamentos:

PrintWriter pw = new PrintWriter (new OutputStreamWriter (new FileOutputStream ("HelloWorld.txt"), "ISO-8859-1")));