Servlet接收表单传过来的中文值,再转发时,出现乱码的问题

问题描述

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><% String message = "Hello World!";String msg = (String)request.getAttribute("msg");if(msg != null && !msg.equals("")){message = msg;}%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <title>My JSP 'helloworld.jsp' starting page</title> </head> <body> <%=message %> <form action="servlet/HelloServlet" method="post"> <input type="text" name="name"/> <input type="submit" value="提交"/> </form> </body></html>  package lee;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.RequestDispatcher;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet {public void service(HttpServletRequest request,HttpServletResponse response)throws IOException{String msg = null;String name = request.getParameter("name");request.setCharacterEncoding("GBK");if(name != null && !name.equals("")){msg = "Hello " + name;}request.setAttribute("msg", msg);RequestDispatcher rd = request.getRequestDispatcher("/Hello/helloworld.jsp");rd.forward(request, response);}}小弟是Java web的初学者,今天学习时,写了一个简单的应用来测试servlet的页面转发功能,问题是: 当输入中文时,会出现乱码,不是编码的问题,这个我试过了,请问各位高手这是什么原因呢,怎么改呢?请指点指点,让大家见笑了。 问题补充:我是用的JSP页面,且设置了编码,你说的第二种方法request.setContentType("text/html;charset=utf-8")也行不通,因为这个是servlet接收了前端的中文字符后,再转发回原页面出现的乱码是一种新情况。<div class="quote_title">wenchenyangailiuyan 写道</div><div class="quote_div">&lt;%@ page language="java" pageEncoding="UTF-8"%&gt;你把html页面换成jsp页面,jsp页面的顶部有个我上面写的东东,那个是编码方式,utf-8包容所有的类型。<br /></div><br />

解决方案

再试试这个,你看看我的博客把myeclipse的编码方式改下看看行不,如果不行的话那你要不加个过滤器吧,那样还能重用了。
解决方案二:
解决了吧
解决方案三:
或者你不想吧html页面改成jsp页面,那就在servlet中加上这个也管事,request.setContentType("text/html;charset=utf-8")
解决方案四:
最好用jsp页面因为他上面有编码方式,另外所有页面的pageEncoding必须都是一致的,例如要是utf-8就都是utf-8,要为其他的就都为其他的。
解决方案五:
<%@ page language="java" pageEncoding="UTF-8"%>你把html页面换成jsp页面,jsp页面的顶部有个我上面写的东东,那个是编码方式,utf-8包容所有的类型。
解决方案六:
如果是用tomcat服务器的话,试试修改在server.xml的<Connector port="8080" URIEncoding="GBK" ....> 或者全部页面,服务器的编码都使用UTF-8,
解决方案七:
http://ethen.iteye.com/admin/blogs/797775你参考下这个吧,希望对你有帮助!

时间: 2024-10-26 07:31:22

Servlet接收表单传过来的中文值,再转发时,出现乱码的问题的相关文章

html当表单name为中文时,servlet无法识别该中文属性传递的值

问题描述 html当表单name为中文时,servlet无法识别该中文属性传递的值 html中 select name="颜" option value="红">红</option servlet中String color=request.getParameter("颜"); response.setContentType("utf-8"); PrintWriter pw =response.getWriter()

文件表单servlet接收乱码

问题描述 文件表单servlet接收乱码 我写的一个文件表单,在servlet中接收input=text这种数据部分是乱码(其中一个我用了(ite=new String(ite.getBytes(""gbk"")utf-8"");))接收到的一个不是乱码,但是下一个数据再用这种方法就变成了乱码,用iso-8859-1转utf-8和gb2312页不可以. 前端的表单 用了 enctype=""multipart/form-dat

jsp中提交到Servlet的表单获取的值为什么都为NULL?

问题描述 jsp中提交到Servlet的表单获取的值为什么都为NULL? ------------------addProduct.jsp--------------- <form action="${pageContext.request.contextPath}/servlet/ManagerServlet?operation=addProduct" method="post""> <table width="80%&quo

servlet接收input的text的值遇到的问题

问题描述 servlet接收input的text的值遇到的问题 这个返回值应该是string类型的,但是为什么用integer.parseint()转换的时候会报错?我用MyEclipse写的 解决方案 integer.parseint()方法会抛出异常,如果你传入的String为不可转换的字符串,像"abc"等.是数字型的字符串才行. 解决方案二: 返回值是空的: 返回值不能转换为数值类型: 解决方案三: 报什么异常,你在转成int类型之前先打印出来String的值,看看能不能转成数

js实现接收表单的值并将值拼在表单action后面的方法_javascript技巧

本文实例讲述了js实现接收表单的值并将值拼在表单action后面的方法.分享给大家供大家参考,具体如下: 今天遇到一个问题,在form表单中有若干个input,其中有一个上传文件的input,现在需要在点击提交按钮时,将不是文件类型的input的值得到并拼成&name=value的格式加在action后面,这样就能一同传出去了 <form id="myform" name="myform" method="post" action=

jsp Servlet如何处理表单数据

      一:表单数据概述 如果你曾经使用过Web搜索引擎,或者浏览过在线书店.股票价格.机票信息,或许会留意到一些古怪的URL,比如"http://host/path?user=Marty+Hall&origin=bwi&dest=lax".这个URL中位于问号后面的部分,即"user=Marty+Hall&origin=bwi&dest=lax",就是表单数据,这是将Web页面数据发送给服务器程序的最常用方法.对于GET请求,表

javascript-$.post传值到servlet接收不到

问题描述 $.post传值到servlet接收不到 求大神救命 解决方案 名称必须一样,不然接不到,我被坑过 解决方案二: post传值中文乱码! 解决方案三: 参数要和你后台一样,不然怎么接受 解决方案四: 把 null 去了. jquery 参数 可选 ,你选了null 就传 null 解决方案五: 你用的 post 请求 , 你在 地址后面传参数干嘛 , 地址后面传参数 用get

php接收表单提交数据实例详解

PHP $_GET 和 $_POST变量是用来获取表单中的信息的,比如用户输入的信息 PHP4.1(好像)以后取消了直接接收变量,而用 $_GET['变量名'] 接收从链接传递过来的变量, 用 $_POST['变量名'] 接收从表单提交来的变量.同样有$_FILES[],$_SERVER[]等 下面是一个 HTML 文件,这个 HTML 含有一个 HTML 表单 (HTML Form),主要用来让用户输入用户姓名的.  代码如下 复制代码 <form action ="get.php&qu

index-lua的元表怎么遍历不到,而且为什么也不能改变表中的元素的值呢,求详解?

问题描述 lua的元表怎么遍历不到,而且为什么也不能改变表中的元素的值呢,求详解? local function tab(t) local proxy = {} local mt = { __index = t, __newindex = function(t, k, v) error("attempt to update readonly a table") end } setmetatable(proxy, mt) return proxy end local days = tab