terça-feira, 24 de novembro de 2009

Upload de arquivo com caracteres especiais


Bom pessoal no meu primeiro post vou teclar sobre upload de arquivos em Java hehehe!!! Viva ao Java. Principalmente de um problema que ocorre quando se faz a chamada para o servidor de uma máquina com Windows para um servidor Linux (muito comum aqui em Brasília). Nesse cenário pode ocorrer problemas com alguns caracteres como o ç que fica assim no nome do arquivo ?.
Seque um trecho de código pra simular o problema.

public static void main(String[] args) {
try {
System.out.println(new String("ç".getBytes("ISO-8859-1"), "UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}

Com esse código obtemos a saída ? no console. Isso significa que um arquivo com o nome de ç.doc ficaria salvo no Linux como ?.doc (pelo menos salva).
Naquele código estamos simulando uma requisição escrita em ISO padrão do Windows e lendo com o padrão do Linux UTF-8 (no Linux pode ser alterado).
Para reproduzir o problema precisamos de duas maquinas uma com o Windows para fazer a requisição e uma com o linux para receber a requisição e gravar o arquivo, tanto faz se no banco de dados como o MySQL, Oracle.... ou não. Nesse outro caso salvamos em uma pasta especifica. Eu prefiro salvar no banco de dados.
Mas vamos reproduzir esse erro em uma unica maquina física com o Windows instalado e uma outra maquina nesse caso virtual com o Ubunto (representando o Linux) instalada no Windows com ajuda da VirtualBox (da pra rodar ate o Android na VirtualBox).
Então no próximo post veremos como instalar a VirtualBox e o Ubunto para consequir reproduzir o erro acima descrito. Depois do ambiente pronto iremos resolver o problema por completo nos próximos posts. Até la.

Nenhum comentário:

Postar um comentário