a) ASCII indica apenas os caracteres cuja representação vai de 0 até 127. Todos os demais NÃO SÃO ASCII.
b) O conjunto de caracteres Windows-1252, também conhecido como “ANSI”, é o conjunto onde o caracter ‘á’ tem o código 225.
c) Casualmente, em Unicode, o caracter ‘á’ tem o código 0x00E1, ou seja, 225.
d) Quando você grava alguma coisa em arquivo, grava bytes, não caracteres. O jeito de gravar os caracteres (convertendo-os em bytes) é o tal do “encoding”.
e) Você provavelmente deve ter usado um PrintWriter ou um FileWriter para escrever o caracter ‘á’, em um sistema operacional (como o Linux) onde o “encoding” default é UTF-8. Nesse caso, os caracteres acentuados podem ser representados por 1 ou mais bytes. Procure por “UTF-8” na Wikipedia ou no Google para entender como é que 0x00E1 foi transformado para 2 bytes (C3 A1).
E
entanglement
Se quiser que uma string seja gravada em um arquivo-texto com a codificação Windows-1252 (onde o caracter ‘á’ é representado como o byte 225 mesmo, sem alterações), especifique isso na hora de gravar. Por exemplo:
Entendi, porém no meu caso, poderia fazer da seguinte maneira:
String str = “á”;
String strc = (“á”,“Windows-1252”);
e oi resultado fique em strc?
é possivel?? por que preciso user o strc como parametro para outro método…
Valeu
E
entanglement
Você ainda não entendeu. Em Java, todos os caracteres são representados com 2 bytes, usando a codificação unicode. Quando você grava uma string em um arquivo, você converte a string para bytes. Essa conversão depende de como você faz a gravação.
T
tetchelex
Ok, ou seja usando os metodos de print que vc me passou nao tem como sair disso?ou a gente consegue fazer a conversão na ponta?
E
entanglement
Ora, na ponta da escrita. Não é para fazer conversão de “string” para “string” que isso não existe.
Você pode usar algum método de FileWriter, PrintWriter, BufferedWriter - não importa. São eles que fazem a conversão de strings para bytes.
T
tetchelex
Puts vai fikar complicado, pois eu crio um arraylist de caracteres do tipo string e mando esse arraylist como parametro pra ser exportado. Por isso gostaria de fazer o processo primitivo contrário… manjou?
e o modo como eu exporto é:
PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter (pathFile, true)));
Valeu!
T
tetchelex
OK cara agora saquei… mas engraçado… agora deu um problema no meu código:
Quando eu uso esse trecho que vc me passou:
PrintWriter pw = new PrintWriter (new BufferedWriter (new OutputStreamWriter (new FileOutputStream (pathFile), “Windows-1252”)));
Exporta normalmente, porém apenas para primeira chamada do metodo de exportação, se houver outra chamada para exportação de outros parâmetros os outros não entram no arquivo.
Agora se eu retornar com o trecho:
PrintWriter pw = new PrintWriter (new BufferedWriter (new FileWriter (pathFile, true)));
Ele nao exporta do jeito que eu quero (windows-1252) mas ele mantem o arquivo aberto esperando chamada de outros metodos de exportação de parâmetros.
Poderiam me ajudar?
E
entanglement
Por favor, consulte a documentação de FileOutputStream. Há um construtor que recebe 2 parãmetros, e em um deles você tem de passar o valor “true”.