`
jacky.jihao
  • 浏览: 153689 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

再次小结ServletRequest.getParameter乱码问题

    博客分类:
  • J2EE
阅读更多

情况之一:没有编码URL

 

HTML 页面

var url = "./SuggestServlet?tagName="+document.getElementById('tagName').value;

 

做一个AJAX请求到SuggestServlet,参数是中文字符串,(传递到容器,由容器决定采用何种编码解析

 

到Servlet之后取这个参数 String myparam = request.getParameter("tagName");

 

得到的是一个乱码字符串,request.getCharacterEncoding() 得到的是一个null值,这时候tomcat默认的是ISO-8859-1编码解析,这就是我们得到乱码的原因了。

 

解决办法:

myparam = new String(myparam.getBytes("ISO-8859-1"),"UTF-8"); 这样就能得到中文了

 

 

情况之二:使用javascript的encodeURI编码中文参数

HTML页面

var url =  "./SuggestServlet?tagName="+encodeURI(document.getElementById('tagName').value);

 

同样是做一个AJAX请求到SuggestServlet,这时候参数被编码过了

 

到Servlet之后取这个参数 String myparam = request.getParameter("tagName");

 

得到的是UTF-8编码之后的字符串,其实不是乱码。

 

要获得中文字符,我们还需要再转换一次编码String decodingParam = URLDecoder.decode(myparam, "UTF-8");

 

 

---------------------------------------------------------------------------------------------------------------------

 

 补充:做URL请求之前,应该使用JavaScript encodeURL(url)

 

---------------------------------------------------------------------------------------------------------------------

分享到:
评论
3 楼 jacky.jihao 2008-12-03  
jacky.jihao 写道

encodeURI
qiuggv 写道
encodeURI()方法是按照什么来编码的? ie下如果把总是以utf-8 发送的勾选去了,那么应该会按照contenttype来编码吧?这样和客户端浏览器相关,后台就不好确定是否用utf-8转回来了 encodeURL用的是UTF-8的编码,通过JavaScript编码的方式是能保证后台得到正确数据的


encodeURL用的是Base64编码
2 楼 jacky.jihao 2008-11-25  
encodeURI
qiuggv 写道

encodeURI()方法是按照什么来编码的? ie下如果把总是以utf-8 发送的勾选去了,那么应该会按照contenttype来编码吧?这样和客户端浏览器相关,后台就不好确定是否用utf-8转回来了

encodeURL用的是UTF-8的编码,通过JavaScript编码的方式是能保证后台得到正确数据的
1 楼 qiuggv 2008-11-25  
encodeURI()方法是按照什么来编码的?
ie下如果把总是以utf-8 发送的勾选去了,那么应该会按照contenttype来编码吧?这样和客户端浏览器相关,后台就不好确定是否用utf-8转回来了

相关推荐

    JSP用过滤器解决request getParameter中文乱码问题.docx

    在开发Java Web应用程序时,经常会遇到请求参数中的中文字符出现乱码的问题,尤其是在使用JSP时。这个问题通常发生在客户端通过HTTP GET或POST方法传递包含中文字符的参数到服务器,然后服务器端通过`...

    javaWEB总结(6):ServletRequest

    String param = request.getParameter("myParam"); System.out.println("接收到的参数值: " + param); // 获取请求头 String contentType = request.getHeader("Content-Type"); System.out.println("Content-...

    JSP利用过滤器解决request中文乱码问题.docx

    在JSP中,客户端的数据一般是通过HTTP GET/POST方式提交给服务器,在服务器端用request.getParameter()读取参数时,很简单消失中文乱码现象。这是因为HTTP协议默认使用ISO-8859-1编码,而中文字符在这个编码中无法...

    Tomcat和weblogic中文乱码问题解决方案

    return toChi(getHttpServletRequest().getParameter(name)); } / * 读取参数列表 - 修正了中文问题. */ public String[] getParameterValues(String name) { String values[] = getHttpServletRequest()....

    中文乱码问题处理方法.docx

    String receivedKeywords = new String(request.getParameter("keywords").getBytes("ISO-8859-1"), "UTF-8"); 另一种是修改Tomcat的server.xml文件中的URIEncoding,例如:<Connector URIEncoding="UTF-8" ...> 3...

    servlet过滤器Api 以及乱码处理.javascript注入问题

    String userInput = (String) request.getParameter("input"); if (userInput != null) { userInput = Jsoup.clean(userInput, Whitelist.basic()); request.setParameter("input", userInput); } chain....

    如何解决Tomcat下中文乱码问题?

    String param = URLDecoder.decode(request.getParameter("paramName"), "UTF-8"); ``` 总结来说,解决Tomcat下的中文乱码问题,关键在于确保JSP页面的编码与服务器设置一致,并在处理表单提交时正确设置请求的字符...

    解决web项目中出现的乱码问题,很方便

    在开发Web项目时,乱码问题常常困扰着开发者,它涉及到字符编码的处理,这是Web应用中的一个常见但至关重要的问题。本方案提供了一个简洁有效的解决方法,通过一个Java文件和在`web.xml`配置文件中的简单设置,可以...

    javaweb乱码问题分析与解决.md

    ### JavaWeb乱码问题分析与解决 #### 一、引言 在JavaWeb开发中,乱码问题是开发者经常遇到的问题之一。它不仅会影响用户体验,还会对数据的正确性造成潜在威胁。本文将针对请求乱码及响应乱码两种情况进行深入剖析...

    java中文乱码处理.pdf

    无论是GET还是POST方式提交,当使用`request.getParameter`获取参数时,如果没有进行正确的编码转换,都可能导致乱码。这是因为Tomcat服务器默认使用ISO-8859-1编码处理请求参数。 对于POST请求,一种解决方法是...

    ServletRequest过滤程序

    提供了ServletRequest过滤程序,重新构造对象内容,并有效规避request.getParameter()、request.getInputStream()冲突的问题,同时提供了对跨站脚本攻击XSS和SQL注入的过滤程序。

    url中文乱码处理大全.docx

    当在Tomcat服务器上处理包含中文的URL时,如果直接通过`request.getParameter()`获取参数,可能会因为默认的编码格式ISO-8859-1不支持中文,导致中文参数变成乱码。为了解决这个问题,开发者通常会采用以下步骤: 1...

    struts解决中文乱码问题

    servletRequest.setCharacterEncoding("GBK"); servletResponse.setContentType("text/html;charset=GBK"); return super.processPreprocess(servletRequest, servletResponse); } } ``` 在这个例子中,我们在`...

    中文乱码问题解决方法

    中文乱码问题解决方法 在 JSP 开发中,中文乱码问题是一个...keywords=new String(request.getParameter("keywords").getBytes("ISO-8859-1"),"UTF-8"); 解决方法二 修改 tomcat 的 server.xml 文件中 URIEncoding。...

    JSP中文乱码解决集锦

    - 解决方案A:在接收参数时手动进行编码转换,例如`String str = new String(request.getParameter("something").getBytes("ISO-8859-1"), "utf-8");` - 解决方案B:在请求开始时设置请求的字符集,`request.set...

    JSP中乱码解决办法

    在JSP(Java Server Pages)开发中,字符编码问题经常会导致中文或特殊字符显示为乱码,这在处理用户输入时尤为明显。本篇将详细探讨如何在JSP中解决POST方式和GET方式下产生的乱码问题,确保数据正确无误地传输与...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    在JavaWeb开发中,尤其是涉及到JSP页面时,乱码问题常常困扰着开发者。这个问题的出现通常是由于字符编码不一致导致的,而过滤器(Filter)作为一种强大的工具,可以有效地帮助我们解决这个问题。本文将详细讲解如何...

    解决tomcat中文乱码问题.doc

    ### 解决Tomcat中文乱码问题 在使用Tomcat服务器部署Web应用时,经常会遇到中文乱码的问题。本文将详细探讨几种常见的乱码场景及其解决方案。 #### 一、JSP页面上的中文显示为乱码 **问题描述**:在JSP页面中直接...

    jspservlet取参数乱码问题分析

    ### jspservlet取参数乱码问题分析 #### 一、问题本质及原因分析 在Java Web开发中,尤其是在处理中文参数时,经常会遇到一个常见问题——**jspservlet取参数乱码**。这一现象通常发生在当用户从客户端提交包含...

    解决J2EE开发中乱码问题

    J2EE开发中遇到的乱码问题是一个常见的困扰,尤其是在处理中文字符时。本文将详细介绍如何解决这些问题,以一个基于Eclipse 3.3 + MyEclipse 6.0 + Tomcat 5.5的项目为例,该项目采用了Ext、Struts和Hibernate框架。...

Global site tag (gtag.js) - Google Analytics