jsp之utf-8中文乱码,永远的痛!
试了一星期,过滤器什么该试的、不该试的都试过了,就是死活不行(就用utf-8,不能用GBK)代码就这几句,在test.jsp要正确显示:publicvoiddoGet(H...
试了一星期,过滤器什么该试的、不该试的都试过了,就是死活不行(就用utf-8,不能用GBK)
代码就这几句,在test.jsp要正确显示:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
request.setAttribute("v","汉字");
request.getRequestDispatcher("test.jsp").forward(request,response);
} 展开
代码就这几句,在test.jsp要正确显示:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
request.setAttribute("v","汉字");
request.getRequestDispatcher("test.jsp").forward(request,response);
} 展开
9个回答
展开全部
在你request.setAttribute("v","汉字")之前
加两句这个
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
因为你的jsp 默认的是ISO8859-1编码(不能讲汉字设置进去,否则就是乱码) 这两个的作用是把你的编码设置成utf-8的 另外在接收的jsp页面中 request中v对象的之前也要加这两句 response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8");
这样每个文件的编码都设成了 utf-8的 这样就OK了
要设置成GBK编码的就把当中的utf-8改成GBK就行
加两句这个
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
因为你的jsp 默认的是ISO8859-1编码(不能讲汉字设置进去,否则就是乱码) 这两个的作用是把你的编码设置成utf-8的 另外在接收的jsp页面中 request中v对象的之前也要加这两句 response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8");
这样每个文件的编码都设成了 utf-8的 这样就OK了
要设置成GBK编码的就把当中的utf-8改成GBK就行
更多追问追答
追问
你试过吗?行的话,我都不用来问了。
追答
麻烦你说话别这么冲好么?人家是好心帮你解决问题 不是看你这点分 这点分有一个狗屎用啊
我当初是菜鸟的时候 用jsp 做跳转的 编码问题就是这样解决的 OK?
这种方法行不通的话 用struts2跳转 需要用jsp页面跳转这种落后的方式么? 是你请教别人问题 应当虚心点
展开全部
我当时也遇到和你一样的问题,但是发现是自己错了。
需要特别注意的是:
request.setCharacterEncoding(“UTF-8”);
在这个语句之前不能调用任何的request.getParameter()方法,否则会设置tomcat的缺省字符集为"ISO-8859-1",并且使setCharacterEncoding的调用失效。
请检查一下你的request.setCharacterEncoding(“UTF-8”); 方法,是在任何的request.getParameter()方法调用之前调用的吗?
需要特别注意的是:
request.setCharacterEncoding(“UTF-8”);
在这个语句之前不能调用任何的request.getParameter()方法,否则会设置tomcat的缺省字符集为"ISO-8859-1",并且使setCharacterEncoding的调用失效。
请检查一下你的request.setCharacterEncoding(“UTF-8”); 方法,是在任何的request.getParameter()方法调用之前调用的吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String str = "你需要处理的字符串";
btye[] b = str.getByte("ISO-8859-1")
str = new String(b); //处理后的字符串!
把你得到的字符串用上面的代码处理一下就可以了!
btye[] b = str.getByte("ISO-8859-1")
str = new String(b); //处理后的字符串!
把你得到的字符串用上面的代码处理一下就可以了!
更多追问追答
追问
不喜欢逐个处理的,想统一处理。
追答
你把这个写成一个构造方法或者普通的方法就可以了!每天调用就行了!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
给你提供个思路,
可以考虑在服务器上加配置啊,我知道tomcat的配置可以这么加:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
希望对你有帮助把....
可以考虑在服务器上加配置啊,我知道tomcat的配置可以这么加:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"
URIEncoding="UTF-8"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" URIEncoding="UTF-8"/>
希望对你有帮助把....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是用get方式获取数据的,而get方式获取的数据是在浏览器的地址栏中输入的,而地址栏的数据如果想正确提交就必须要进行编码动作,如果你没有进行编码,必乱,其中就例如空格用%20代替,规则很多就不在这里一一说明了,自己去查吧,很多文档,另外在提交数据的时候尽量避免使用get方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询