2013-07-10 78 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

是的,你說得對。爲我沒有實際編譯第一:) –