`

servlet传值出现乱码的解决

    博客分类:
  • Java
阅读更多

之前都用SSH开发,完全不懂servlet...今天在祖哥的带领下初识了servlet,写了一个小的demo。大体的功能是在一个页面输入一个词,后台通过servlet传值到百度进行搜索。

可惜啊,servlet不给面子,输入页面的值总是出现中文乱码。上网查了很多资料,解决的都不理想。最后综合了几篇文章,终于成功将值正确传入百度输入框中去啦。哈哈~

下面是过程:

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base>
  </head>
  
  <body>
    <form action="hello">
		<input type="text" name="name"/>
		<input type="submit"/>
	</form>
  </body>
</html>

 

第一行的pageEncoding按正常的习惯我给直接改成了utf-8。这样一般是比较不会出现乱码的。页面上有个提交按钮,在文本框中输入了中文后提交,调用hello对应的servlet (web.xml中有配置),程序就流动到了我写的HelloServlet.java中。

 

HelloServlet.java (修改前,会乱码)

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String str= request.getParameter("name");  
		response.sendRedirect("http://www.baidu.com/s?wd=" + str);  //将页面输入的值str作为关键字传给百度
	}

 

OK, 在tomcat上把程序跑起来,在文本框中输入“啦啦啦”,额,乱码就出现了,百度查了一个不知道是什么东东的东东。

这时候想想,乱码是在哪里造成的呢?从页面上读取的时候会不会已经是乱码了呢?那我们在上面代码中吧str先打印出来看看吧。

 

String str=request.getParameter("name");  
System.out.println(str); //打印出刚从页面上传回来的值看看是否是乱码

 

 额,结果还真是乱码啊,居然在第一步的传值就乱了。恩,那要怎么修改?上百度查了些文章,一个一个方法试过,最后总算能让System.out.println(str)打印出正确的中文字了

 

String str=new String( request.getParameter("name").getBytes("iso8859-1"), "utf-8");  
System.out.println(str);

 

恩,解释一下第一句,getBytes("iso8859-1") ,将页面的string用iso8859-1 编码读入(因为jsp页面很多都用iso进行内部编码,这是网上人家说的),然后用utf-8 读出到str中。这里我用utf-8 就可以在println中看到正确的中文了。如果你的用utf-8 不行,可以换成其他编码试试,直到println能正确打出中文。(总有一种编码是正确的吧,utf-8不行就一个一个试看看吧)。这步对了再进行下一步。

 

到这里,起码就可以确认从页面读入servlet的string是没有乱码了的吧。这时工程跑起来还有乱码,那就是从servlet传到目的页面时候产生的了啦。如同我的代码。这时servlet中的str是正确的中文了,可是response.sendRedirect("http://www.baidu.com/s?wd=" + str) 到百度后却是乱码(额,插一句废话,这里通过s?/wd = 关键字  将查询关键字输入给百度)。又上网查了,最后结果是改成这样的:

 

HelloServlet.java

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String str=new String( request.getParameter("name").getBytes("iso8859-1"), "utf-8");  
		System.out.println(str);
		str = java.net.URLEncoder.encode(str);
		response.sendRedirect("http://www.baidu.com/s?wd=" + str);
	}

 

恩,这样就能正确的显示啦。在文本框里输入“你好”,点按钮,页面就自动链接到百度同时用百度查询了“你好”啦。

 

 

                                                                                                               by   NN     2009-9-28

分享到:
评论

相关推荐

    jsp页面传值中文乱码问题处理.docx

    在 JSP 页面中传值时,中文字符可能会出现乱码问题,这是由于字符编码不一致所引起的。下面将详细讲解 JSP 中文乱码种类和解决方案。 JSP 文件中文内容显示乱码 在 JSP 文件中,如果中文内容显示乱码,可能是由于...

    jQuery Ajax传值到Servlet出现乱码问题的解决方法

    总的来说,解决Ajax传值到Servlet的乱码问题需要确保每个环节的编码设置一致,从JSP页面到Ajax请求,再到Servlet的接收和响应。只有这样,才能保证数据在整个传输过程中不发生乱码。记得在排查问题时,逐步检查每个...

    jsp传值中文乱码问题解决方法示例介绍.docx

    本篇将详细介绍如何解决JSP传值过程中出现的中文乱码问题。 首先,我们需要理解乱码产生的原因。在网页中,数据的编码和解码过程需要保持一致。如果服务器和客户端之间使用的字符编码不同,就可能出现乱码。例如,...

    jsp传参 servlet接收中文乱码问题的解决方法.docx

    jsp 传参 servlet 接收中文乱码问题的解决方法 jsp 传参 servlet 接收中文乱码问题是一个经常遇到的问题,特别是在使用 Hibernate+Servlet 框架时。当我们在 jsp 页面传参到 servlet 时,中文字符经常会出现乱码...

    ajax到servlet乱码解决

    当我们使用 AJAX 通过 URL 传参数给 Servlet 时,Servlet 在接收参数时会出现乱码问题。例如,我们使用 AJAX 通过 URL 传递中文参数 "中文测试" 给 Servlet,Servlet 在接收参数时却变成了乱码 "�������"。这...

    ajax与Servlet,传值Demo

    3. **Ajax与Servlet传值中文乱码问题** - **前端处理**:在发送Ajax请求时,设置请求头Content-Type为"application/x-www-form-urlencoded; charset=UTF-8",确保数据编码为UTF-8。 - **后端处理**:在Servlet中,...

    jsp传值中文乱码问题解决方法示例介绍

    在开发Java Web应用程序时,尤其是使用JSP技术时,经常遇到的一个问题是中文字符在传递过程中出现乱码。这个问题主要涉及到字符编码的设定和统一。本文将详细介绍如何解决JSP中的中文乱码问题,并通过示例代码进行...

    java传值中的乱码

    ### Java传值中的乱码问题及最简易的解决方法 在Java Web开发中,经常会遇到一个令人头疼的问题:客户端向服务器传递数据时出现乱码。这种情况不仅会影响用户体验,还可能导致程序逻辑错误。本文将深入探讨Java传值...

    jquery的ajax()函数传值中文乱码解决方法介绍

    这个问题主要出现在数据发送到服务器时,由于编码格式不一致导致的字符乱码。以下是一些解决此问题的方法: 方法一:使用`encodeURI()`进行两次编码 在发送数据前,可以对包含中文的数据字段使用`encodeURI()`函数...

    js url传值中文乱码之解决之道

    总结来说,解决JavaScript URL传值中文乱码问题,关键在于客户端和服务器端字符集编码和解码的一致性。需要确保编码和解码使用同样的字符集标准,并且在一些特殊情况下可能需要对URL进行两次编码。在实际操作中,...

    java 页面url传值中文乱码的解决方法

    Java 页面URL传值中文乱码问题通常出现在前端Ajax请求中,当URL参数包含中文字符时,服务器端通过`request.getParameter()`获取参数时,可能会出现乱码现象。这是因为HTTP协议默认使用ISO-8859-1编码,而中文字符...

    解决乱码问题

    #### 五、URL传值乱码 URL传值时出现的乱码问题,解决策略与GET提交类似,即在接收参数时进行编码转换。 #### 六、MySQL数据库乱码 数据库中的乱码问题通常源于数据存储和检索时的编码不匹配。解决MySQL数据库...

    javaee中的乱码问题及解决方案(持续更新)(修改后).docx

    解决URL传值乱码的方法与表单GET提交方式相同,需要正确处理编码和解码过程。 5. **MySQL的乱码问题** MySQL数据库中的乱码问题通常涉及数据库连接的字符集设置。需要在MySQL的配置文件`my.ini`中修改两项设置,...

    JSP页面传值乱码过滤方法

    在Web开发中,JSP(Java Server Pages)是一种常用的动态网页技术。使用JSP开发的Web应用经常遇到的一个...希望上述分析和解释能够帮助大家更好地理解和解决JSP页面传值乱码的问题,从而提高JSP程序设计的质量和效率。

    j2ee中文乱码问题终极解决之道

    3. JSP与Java代码的传值:在Servlet或Bean中处理JSP提交的数据时,如果未正确处理编码,可能出现乱码。 4. 数据库读取数据:数据库的编码与Java应用的编码不匹配,读取数据时会出现乱码。 针对这些场景,有以下几种...

    解决url中文乱码.doc

    3. **解决URL乱码**:在`Index.jsp`中,两个按钮点击事件分别调用了`doSubmit()`和`doAction()`函数,这两个函数使用`URLEncoder.encode()`对中文字符串进行编码,确保在URL中传输时不出现乱码。例如: ```java (...

    java前后台(含数据库)乱码大综合

    本文将针对Struts2文件下载乱码、Ajax中文参数乱码、Servlet响应乱码、JSP页面间传值乱码以及数据库乱码等场景进行深入探讨。 首先,Struts2文件下载时的中文文件名乱码问题,可以通过以下两个步骤解决。在设置...

    JSP.rar_Action!_jsp传值

    本教程将重点讲解如何在JSP页面中向Action传递值,并解决可能出现的中文乱码问题。 一、JSP与Action交互基础 JSP是一种基于Java的服务器端脚本语言,主要用于生成动态网页内容。而Action,特别是在Struts2框架中,...

Global site tag (gtag.js) - Google Analytics