Quando si immette l'URL nella barra degli indirizzi del browser, il browser può convertire la codifica dei caratteri prima della codifica dell'URL. Tuttavia, questo comportamento non è ben definito, vedere la mia domanda,
Handling Character Encoding in URI on Tomcat
Il più delle volte otteniamo UTF-8 e latino-1 nei browser più recenti, ma arriviamo tutti i tipi di codifiche (tra cui Big5) in quelli vecchi. Quindi è meglio evitare caratteri non ASCII nell'URL inserito direttamente dall'utente.
Se l'URL è incorporato in JSP, è possibile forzare in UTF-8, generando in questo modo,
String link = "http://hello/world?name=" + URLEncoder.encode(name, "UTF-8");
Su Tomcat, la codifica deve essere specificata sul connettore come questo,
<Connector port="8080" URIEncoding="UTF-8"/>
È inoltre necessario utilizzare request.setCharacterEncoding("UTF-8")
per la codifica del corpo, ma non è sicuro impostarlo in servlet perché funziona solo quando il parametro non viene elaborato ma altri filtri o valvole potrebbero attivare l'elaborazione. Quindi dovresti farlo in un filtro. Tomcat viene fornito con un filtro di questo tipo nella distribuzione di origine.
fonte
2009-09-02 06:07:51
Qual è l'URL effettivo? –