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 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
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
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")));