2013-07-10 75 views
1

我有一个Primefaces的表单。 xml文件的头看起来像这样:解码Java字符/字符串

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 

当我发送的形式,我采用的值与HttpServletRequest

public String handleRequest(HttpServletRequest request) {  
    String shortname = request.getParameter("shortname"); 
    (...) 

现在,当shortname包含umlaute,例如ü ,umlaute将被保存为UTF-8编码。所以我的ü得到保存为Ã

我怎样才能解码它呢?所有的教程都使用字节数组,但我没有。

我需要这个变量在一个电子邮件,它看起来不太好用一些象形文字。

+2

如果你调用的getParameter之前重写请求的编码会发生什么?例如调用'request.setCharacterEncoding(“UTF-8”);'? –

+0

哈哈是什么。这有多简单?!完善!你可以发表一个答案,我会接受它。 –

+0

重新发布为答案。很高兴帮助。 –

回答

2

你需要告诉HttpServletRequest实例,它是在UTF-8:

public String handleRequest(HttpServletRequest request) {  
    try { 
     request.setCharacterEncoding("UTF-8"); 
     String shortname = request.getParameter("shortname"); 

     (...) 
    } 
    catch (UnsupportedEncodingException e) { 
     // ... 
    } 
} 
+1

再次感谢!顺便说一句,'setCharacterEncoding'应该围绕着try/catch :) –

+0

是的,你说得对。为我没有实际编译第一:) –