servlet获取JSP页面内容为乱码怎么解决?

 我来答
哈尔滨市南岗区爱尚职
2017-05-15 · 做品质教育,用事实说话
哈尔滨市南岗区爱尚职
爱尚实训成立于2010年,总部设立在软件外包名城—大连,并在哈尔滨和沈阳设有分校。爱尚实训专注于IT行业精英的培养,打造高端IT技能实训品牌。
向TA提问
展开全部
  1. jsp提交数据有两种方式,一种是post,一种是get,两种不同的提交方式对中文的处理也不同。

  2. post提交方式只需在servlet中设置好request.setCharacterEncoding("编码集"); 注:编码集按照您的需求写,可以是UTF-8,也可以是GBK或GB2312.

  3. get提交方式则需要转码,因为tomcat服务器编码集为ISO8859-1,需要手动转码,下方代码是我个人编写的一个工具类,希望对你有帮助!另外jsp传递中文如果用get提交方式,在前台对中文也要


  4. 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;
         }
  5. 如既有可能有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);
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
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同理
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式