servlet获取JSP页面内容为乱码怎么解决?
5个回答
2017-05-15 · 做品质教育,用事实说话
关注
展开全部
jsp提交数据有两种方式,一种是post,一种是get,两种不同的提交方式对中文的处理也不同。
post提交方式只需在servlet中设置好request.setCharacterEncoding("编码集"); 注:编码集按照您的需求写,可以是UTF-8,也可以是GBK或GB2312.
get提交方式则需要转码,因为tomcat服务器编码集为ISO8859-1,需要手动转码,下方代码是我个人编写的一个工具类,希望对你有帮助!另外jsp传递中文如果用get提交方式,在前台对中文也要
public static String returnNewString(String oldString){
String newString="";
try {
newString = new String(oldString.getBytes("ISO-8859-1"),"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return newString;
}如既有可能有post提交方式,也有可能有get提交方式,可以采用修改tomcat的server.xml文件,或采用过滤器,修改server.xml文件方式为:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
推荐于2017-06-15
展开全部
servletl里面处理的话:1,post提交处理:response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8"); 2,get提交处理:String str = new String(request.getAttribute("jsp里名字").getByte("ISO-8859-1"),"GBK");我建议最好在过滤器种过滤一下下面不管你是get提交还是post提交都可以处理中文乱码问题 try {
if(request.getMethod().equals("POST")){//这里是判断你是否是用post提交
request.setCharacterEncoding("utf-8");这是post提交出理方法
}else{
Map<String,String[]> map=request.getParameterMap();
for (Iterator<String> iterator = map.keySet().iterator(); iterator
.hasNext();) {
String key =iterator.next();
String[] value=map.get(key);
for (int i = 0; i < value.length; i++) {
value[i]=new String(value[i].getBytes("ISO-8859-1"),"utf-8");//这里是get提交处理方法
}
}
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.processPreprocess(request, response);
request.setCharacterEncoding("utf-8"); 2,get提交处理:String str = new String(request.getAttribute("jsp里名字").getByte("ISO-8859-1"),"GBK");我建议最好在过滤器种过滤一下下面不管你是get提交还是post提交都可以处理中文乱码问题 try {
if(request.getMethod().equals("POST")){//这里是判断你是否是用post提交
request.setCharacterEncoding("utf-8");这是post提交出理方法
}else{
Map<String,String[]> map=request.getParameterMap();
for (Iterator<String> iterator = map.keySet().iterator(); iterator
.hasNext();) {
String key =iterator.next();
String[] value=map.get(key);
for (int i = 0; i < value.length; i++) {
value[i]=new String(value[i].getBytes("ISO-8859-1"),"utf-8");//这里是get提交处理方法
}
}
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return super.processPreprocess(request, response);
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-22
展开全部
可以用这种形式解决,String str = new String(request.getAttribute("name").getByte("ISO-8859-1"),"GBK")
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-22
展开全部
jsp页面是否是否于java编码一致?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-06-15
展开全部
设置编码格式:
response.setContentType("text/html;charset=UTF-8"); 目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;
response.setCharacterEncoding("UTF-8"); 的目的是用于response.getWriter()输出的字符流的乱码问题,如果是response.getOutputStream()是不需要此种解决方案的;因为这句话的意思是为了将response对象中的数据以UTF-8解码后发向浏览器;
request同理
response.setContentType("text/html;charset=UTF-8"); 目的是为了控制浏览器的行为,即控制浏览器用UTF-8进行解码;
response.setCharacterEncoding("UTF-8"); 的目的是用于response.getWriter()输出的字符流的乱码问题,如果是response.getOutputStream()是不需要此种解决方案的;因为这句话的意思是为了将response对象中的数据以UTF-8解码后发向浏览器;
request同理
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询