问题描述
程序代码如下:<%@pagelanguage="java"contentType="text/html;charset=GB2312"pageEncoding="GB2312"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><title>Inserttitlehere</title></head><body><formaction="Example3_2_1.jsp"method="post"name="myform"><inputtype="text"name="girl"/><inputtype="submit"value="Enter"name="Submit"></form><%StringtextContent=request.getParameter("girl");if(textContent==null){textContent="";}request.setCharacterEncoding("GB2312");%><%=textContent%></body></html>运行后,如果在文本框中输入汉字,让其在浏览器上显示,显示出来的结果是乱码,这是为什么呢?代码应该如何修改,请教大家了,谢谢!
解决方案
解决方案二:
编码格式统一起来不要GB2312和utf-8都用,做好都用utf-8
解决方案三:
newString(FilmName.getBytes("iso8859-1"),"gbk");重新编码下酒可以了。格式自己定。代码如上
解决方案四:
用utf-8
解决方案五:
<%@pagelanguage="java"contentType="text/html;charset=GB2312"pageEncoding="GB2312"%>+<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">不乱码就奇怪了两句代码编码统一下
解决方案六:
我试过了,编码都统一了,可是还是乱码?这该咋办呢?
解决方案七:
<%@pagelanguage="java"contentType="text/html;charset=GB2312"pageEncoding="GB2312"%>该为GB2312->utf-8然后request.setCharacterEncoding("utf-8");或者你把这句去掉吧。如果你对一个值,重复用了转换,也会出现乱码,比如后台java文件里你已经转换了,到了前台jsp页面,你又转换。那么就会出现乱码。建议你统一都该成utf-8,这样的话,什么地方都不用转换了。也就不会出现乱码了。
解决方案八:
我按照您说的操作了一遍,把这句request.setCharacterEncoding("utf-8")去掉了。还是乱码。要不您给我写个例子,运行出来不是乱码的,我在我的电脑上调试下。谢谢!
解决方案九:
<%StringtextContent=request.getParameter("girl");if(textContent==null){textContent="";}request.setCharacterEncoding("GB2312");%>去看一下以上代码,先确认一下是在request.getParameter("girl");的时候乱码了,还是显示的时候乱码了。request.setCharacterEncoding("GB2312");这句话写上有用吗?
解决方案十:
把文件的属性改成utf-8,然后再把jsp的编码格式改成utf-8,试试,祝你好运!。。。
解决方案十一:
其实在统一了界面上的编码外,最好写一个语言过滤器,如果用到struts2,可以直接在web.xml中配置用struts2自带的语言过滤器,<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>如果没用的话,可以自己写一个过滤器再配置好;packagecom.util;importjava.io.IOException;importjava.util.Enumeration;importjavax.servlet.Filter;importjavax.servlet.FilterChain;importjavax.servlet.FilterConfig;importjavax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/**编码规范过滤器:统一用utf-8*@authorAdministrator**/publicclassCodeFiltersimplementsFilter{publicvoiddestroy(){//TODOAuto-generatedmethodstub}publicvoiddoFilter(ServletRequestsreq,ServletResponsesresp,FilterChainchain)throwsIOException,ServletException{HttpServletRequestreq=(HttpServletRequest)sreq;HttpServletResponseresp=(HttpServletResponse)sresp;Stringmethod=req.getMethod();if(method.equalsIgnoreCase("post")){req.setCharacterEncoding("utf-8");}else{Enumerationration=req.getParameterNames();while(ration.hasMoreElements()){Stringkey=ration.nextElement().toString();String[]value=req.getParameterValues(key);for(Stringstring:value){string=newString(string.getBytes("iso8859-1"),"utf-8");}}}resp.setCharacterEncoding("utf-8");chain.doFilter(req,resp);}publicvoidinit(FilterConfigarg0)throwsServletException{//TODOAuto-generatedmethodstub}}web.xml:<!--配置语言过滤器--><filter><filter-name>encode</filter-name><filter-class>com.util.CodeFilters</filter-class></filter><filter-mapping><filter-name>encode</filter-name><url-pattern>/*</url-pattern></filter-mapping>
解决方案十二:
根本不用那么麻烦的因为你的页面已经变成了CLASS文件有些编译软件已经把整个文件识别为一个编码所以统一了还是会这样你可以试着吧你的代码先复制到写字板,然后统一代码,保存。删除原有的页面和在运行环境里面运行过的页面全部清除。在把这个写字板改为JSP文件丢进去运行OK要是还有问题那么就去找个软件直接转码也可以一般的编程软件都有这个功能。以后要注意页面传值各个类XML配置文件数据库的编译格式最好全部一致可以减少很多的乱码问题
解决方案十三:
曾经linux血和泪的教训啊!经验之谈,上面大家给的方法都是对的,但是有时候有些问题比较偏的。编译过的文件很多是稀奇古怪的。楼主学到别忘记给分!
解决方案十四:
页面编码用用utf-8
解决方案十五:
GB2312是Utf-8编码格式的一个子集,编码可以从GB2312转到Utf-8,但是转回来肯定会出现乱码。。。