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.
É 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”.
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
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.
E qual char set usar? Já tentei:
URLEncoder.encode(query, “ISO-8859-1”);
e
URLEncoder.encode(query, “UTF-8”);
e não vi nenhuma mudança na String… 8/
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);
}
}
Acabei de ver um exemplo parecido… Valew d+ pela prontidão… 5 estrelinhas brother!
Só para constar (caso alguém leia), funcionou perfeitamente…