我有一個輸入字段,用戶可以編寫任何需要的字段,包括國際lang字符。將內部字符從一個小服務器轉移到另一個小服務器時的問題
第一個servlet有;
protected void doWork(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = new PrintWriter(new OutputStreamWriter(response.getOutputStream(), "UTF8"), true);
out.println("<HTML><HEAD><TITLE>");
...
out.println("<input type=text name=someText style='width:10em;'>");
該servlet繼續提交按鈕到第二個具有以下關鍵行的servlet;
if(httpRequest.getCharacterEncoding() == null)
httpRequest.setCharacterEncoding("UTF-8");
String someText= httpRequest.getParameter("someText");
我得到一些奇怪的名字:AAA°iÃüÃöÃçIı當我與調試進行。
我在做什麼錯了?
感謝您的幫助,
您的'PrintWriter'方法笨拙。在獲得response.getWriter()之前,只需執行'response.setCharacterEncoding(「UTF-8」)* *。無需在'InputStreamReader'中包裝。另外,在servlet中發佈HTML是非常糟糕的做法。它應該在JSP中完成。另見http://stackoverflow.com/tags/servlets/info和http://balusc.blogspot.com/2009/05/unicode-how-to-get-characters-right.html。 – BalusC