我必须在 url 中有 utf-8 个字符。
例如有一个字符串要放在 url 中:
“海兰力克”
我想编码它:
try{
selected=URLEncoder.encode(selected,"UTF-8");
}catch(Exception e){
e.printStackTrace();
}
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("http://" + serverUrl +"/myjsfpage.jsf?param=" + selected );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我调试它,我看到一个预期的字符串:Hayranl%C4%B1k%24
在另一个控制器中,我必须处理它,所以我通过
HttpServletRequest req = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
String selected = (String)req.getParameter("param");
if(selected ==null){
//show no result message
return;
}
之后我尝试对其进行解码,但是“在”解码之前,我从 url 获得的字符串类似于“Hayranlık$”。
try{
selected=URLDecoder.decode(selected,"UTF-8");
}catch(Exception e){
e.printStackTrace();
}
JSF 重定向会导致问题,还是浏览器 URL 处理问题?