Problema com acentuação

7 respostas
rissato

Olá, estou com um problema ao requisitar dados de um servidor quando existe acentuação nos parâmetros. O problema nem chega ao banco de dados, portanto devo ter que codificar a String da URL antes de fazer o chamado. Alguem sabe como? Vi aqui no guj alguns modos de fazer isso somente ao receber dados. Obrigado.

7 Respostas

T

É o nome do parâmetro que tem acento? (Que feio)

Por exemplo, http://seuservidor/suaaplicacao/teste.jsp?parâmetro=valor

Tire os acentos dos nomes dos parâmetros. Isso não é muito “portável”.

rissato

não… de jeito nenhum! (oO) são os valores dos parâmetros… tipo:
interface?q=insert into recados (mensagem) values (‘Olá’)&u=user&s=senha

T

Hum, você não pode montar sua string desse jeito. Você precisa usar a classe java.net.URLEncoder, se não me engano.

Aí os espaços serão convertidos para “+”, os acentos para %<código hexadecimal>, etc.

rissato
E qual char set usar?  tentei:

URLEncoder.encode(query, ISO-8859-1);

e

URLEncoder.encode(query, UTF-8);

e não vi nenhuma mudança na String 8/
T

URLEncoder não modifica sua string, porque strings são imutáveis.

import java.net.*;

class TesteURLEncoder {
    public static void main(String[] args) throws Exception {
        // Note que URLEncoder deve ser aplicado a cada parte de sua query, não à query inteira.
        String s = "http://servidor/aplicacao/";
        s += "interface?" + "q=" + URLEncoder.encode ("insert into recados (mensagem) values ('Olá')", "UTF-8");
        s += "&u=" + URLEncoder.encode ("user", "UTF-8");
        s += "&s=" + URLEncoder.encode ("senha", "UTF-8");
        // Deve imprimir:
        // ... interface?q=insert+into+recados+%28mensagem%29+values+
        // %28%27Ol%C3%A1%27%29&u=user&s=senha
        System.out.println (s);
    }
}
rissato

Acabei de ver um exemplo parecido… Valew d+ pela prontidão… 5 estrelinhas brother!

rissato

Só para constar (caso alguém leia), funcionou perfeitamente…

Criado 22 de agosto de 2006
Ultima resposta 22 de ago. de 2006
Respostas 7
Participantes 2