未使用任何框架(比如:springmvc),原生servlet,现在遇到乱码问题。
package com.deepweb.charset;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class CharSet
*/
@WebServlet("/CharSet")
public class CharSet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CharSet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String text = request.getParameter("text");
System.out.println(text);
response.getWriter().print(text);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
请问我浏览器输入相应地址后,为什么System.out.print打印出来是乱码而浏览器显示正常?
QueryString默认使用的是ISO-8895-1的编码或者是Header中ContentType中定义的Charset,如果你没有设置这些,后台通过request获取到的参数就是乱码。
可以使用
获取到正确的值。