Servlet está recebendo valor errado

3 respostas
andwolf

Olá

Bem o problema é o seguinte, quero recuperar na servlet um parâmetro que é enviado por uma função da .js,
esse parâmetro recuperado é de tipo String.

O problema é que quando recupero, se o parâmetro contem algum caracter especial, “zica” tudo
Colequei um alerta no código da .js e ali aparece normalmente, quando recebo na servlet substitui os caracteres especiais por
outros;

exemplo do que acontece :
Mensagem na js
.js -> “Atenção”

Syso na servlet  
                                         servlet -> "Aten?o"

isso está me causando varios problemas, segue o codigo da função e de quando recebo ela na servlet não sei mais o que fazer:
Função da .js

function itemAddedSemDuplicidade(upload_component){
	var entries = upload_component.entries;
	var fileName = '';
	for(var i = 0; i < entries.length; i++){
		fileName += entries[i].fileName + ';';
	}
	alerta(fileName);                                     //Aqui o nome vem correto
	request = getJSHttpRequestObject();
	var url = getUrlApp();
	request.open('GET', url + '/audio-servlet?action=upload&fileName='+fileName, true);
	request.onreadystatechange= function() {
		if(request.readyState == 4)        {               
			deleteUploadElements(upload_component, request.responseXML);
         }
    };
	request.send(null);
}

Servlet

//String files = new String(request.getParameter("fileName").getBytes(), "UTF-8");          
//String files = new String(request.getParameter("fileName").getBytes(), "ISO-8859-1"); 
//String files = new String(request.getParameter("fileName"))   
                                    
             // ja utilizei essas tres formas para recuperar o parametro, porém continua errado

String files = new String(request.getParameter("fileName").getBytes("UTF-8"), "UTF-8" );

System.out.println(files);

Agradeço desde já

3 Respostas

samuel.grigolato

Tenta fazer isso:

request.open('GET', url + '/audio-servlet?action=upload&fileName='+escape(fileName), true);
andwolf

Bem samuel.grigolato

Grato por responder

mas não funcionou, fiz mais alguns testes e descobri o seguinte esta aplicação usando tomCat (implementado no eclipse), no windows XP. Para receber o parâmetro na Servlet as quatro maneiras abaixo funcionam;

String files = new String(request.getParameter("fileName").getBytes(), "ISO-8859-1");
files = new String(request.getParameter("fileName").getBytes("UTF-8"), "UTF-8" );
files = new String(request.getParameter("fileName").toCharArray());
files = new String(request.getParameter("fileName"));

Mas essa não:

String files = new String(request.getParameter("fileName").getBytes(), "UTF-8");

Só que o servidor que eu uso é Ubunto 9.10 e rodando Jetty 6 não funciona nenhuma das citadas
Alguém tem mais uma idéia?

Grato mais uma vez

andwolf

Bom dia!!

Alguém tem mais alguma idéia, qualquer coisa vale

Obrigado

Criado 30 de julho de 2010
Ultima resposta 2 de ago. de 2010
Respostas 3
Participantes 2