首先,已经写了个过滤器 HttpServletRequest hrequest=(HttpServletRequest)request;
hrequest.setCharacterEncoding("UTF-8");
HttpServletResponse hresponse=(HttpServletResponse)response;
hresponse.setContentType("text/html; charset=UTF-8");////这句我看以前帖子都没有写,但是我只有在写了之后才能在使用 response.getWriter().println("乱码");不出现乱码
filterChain.doFilter(hrequest, response);
每个jsp页面的charset 都是utf-8,
我使用的是struts
现在的情况是,我在input 页面 输入中文,然后在action.do里面打印出来的时候,出现的是乱码,
但是我在ActionForm (textFrom)里面一个属性 直接附值比喻说
public void setContent(String content){
//this.content=content;
this.content="中文";}这样在action.do 里面 response.getWriter().println(textForm.getContent());
输出的 是 “中文” 两个字,而且插入数据库中也ok, 我从数据库中读取出来的中文也能正常显示,
现在的问题就是 从jsp页面里的表单 值 传到ActionForm 中,中文会变为乱码
我写个转化函数 ,就是那常见的trans函数
temp = str.getBytes("iso-8859-1");
result = new String(temp);
在ActionForm 的setXXX里面都
调用 比喻说 this.content=XXX.trans(content);结果还是不行。
而且我在XXXaction.do里面 response.getWriter().println(XXX.trans(textForm.getContent));
还是乱码,郁闷 伊, 觉得把这个弄好了,一定把 中文乱码问题好好研究下
hrequest.setCharacterEncoding("UTF-8");
HttpServletResponse hresponse=(HttpServletResponse)response;
hresponse.setContentType("text/html; charset=UTF-8");////这句我看以前帖子都没有写,但是我只有在写了之后才能在使用 response.getWriter().println("乱码");不出现乱码
filterChain.doFilter(hrequest, response);
每个jsp页面的charset 都是utf-8,
我使用的是struts
现在的情况是,我在input 页面 输入中文,然后在action.do里面打印出来的时候,出现的是乱码,
但是我在ActionForm (textFrom)里面一个属性 直接附值比喻说
public void setContent(String content){
//this.content=content;
this.content="中文";}这样在action.do 里面 response.getWriter().println(textForm.getContent());
输出的 是 “中文” 两个字,而且插入数据库中也ok, 我从数据库中读取出来的中文也能正常显示,
现在的问题就是 从jsp页面里的表单 值 传到ActionForm 中,中文会变为乱码
我写个转化函数 ,就是那常见的trans函数
temp = str.getBytes("iso-8859-1");
result = new String(temp);
在ActionForm 的setXXX里面都
调用 比喻说 this.content=XXX.trans(content);结果还是不行。
而且我在XXXaction.do里面 response.getWriter().println(XXX.trans(textForm.getContent));
还是乱码,郁闷 伊, 觉得把这个弄好了,一定把 中文乱码问题好好研究下
<META http-equiv=Content-Type content="text/html; charset=GBK">
试试
${textForm.title}<br />
${textForm.content}<br />
<%
TextForm tf=(TextForm)session.getAttribute("textForm");
out.println(tf.getTitle()+"<br />");
out.println(tf.getContent()+"<br />");
out.println(ToolClass.trans(tf.getTitle())+"<br />");
out.println(tf.getContent()+"<br />");
%>
这儿的中文ok
最后的输出结果
----------------------------------
æ ‡é¢˜
这儿的中文ok
æ ‡é¢˜
这儿的中文ok
鏍囬
这儿的中文o
乱码 -------------------------
////我在FormAction 里面的 setContent(String content) 是this.content="这儿的中文ok"
从上面的输出可以看书 使用ToolClass.trans转换后,出现的乱码不一样了。
这个方法不行,我已经实验过。
http://www.blogjava.net/rickhunter/articles/33571.html
不行
如果不同struts 的ActionForm 我可以解决,现在问题是 要传值到ActionForm 中出
明明偶说了已经用了过滤器
你还说用filter
郁闷
这样一切正常。
如果你一定要在jsp页面上设置"utf-8",会是另一种情况,你说一声。
我终于搞定了
摸索在 在
filter 添加了个东西
HttpServletRequest hrequest=(HttpServletRequest)request;
hrequest.setCharacterEncoding(this.encoding);
HttpServletResponse hresponse=(HttpServletResponse)response;
hresponse.setCharacterEncoding(this.encoding);///。。我设置为gbk
filterChain.doFilter(hrequest, response);什么其他的 trans 函数 ,getbyte 函数都不需要用
另外 在每个页面也是用的gbk
数据库的 默认编码也是gbk
使用这句是为了让输出时候不出现乱码
在使用表达式时候 或者 out.println都会出现乱码
request.setCharacterEncoding 只是设置 request的编码 方式
而jsp 的<% page ContentType="text/html;charset=gbk"%>是设置当前页面的编码方式
对 以流来输出的内容似乎没有影响