解决方案 »

  1.   

    是tomcat不?
    tomcat的话conf目录里面有个server。xml搜索你的端口一般是8080
    加上URIEncoding=“gb2312”试下
    还有就是表单提交用post方法
    get好像很麻烦
      

  2.   

    提交的时候需要编码:encodeURI(encodeURI("中文字符")); 然后后台解析URLDecoder.decode("中文字符", "GB2312");
      

  3.   

    该Tomcat的编码方式总感觉不专业的样子。
      

  4.   

    encode这个不是get方式下用的?
    学过忘了~
      

  5.   

    是不是你使用的浏览器默认的编码格式是UTF-8
      

  6.   


    看看你页面最上面创建的是什么编码格式如果不是UTF-8可以加上
    或者后台接收参数时进行编码格式转换
    String value = new String (request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
    如果以上都解决不了的话   可能是数据库编码设置问题
    MYSQL一般会出现这样的问题 可以用以下方法查看编码格式其中,character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码;character_set_database数据库的编码;
    character_set_results结果集的编码;
    character_set_server数据库服务器的编码;
    只要保证以上四个采用的编码方式一样,就不会出现乱码问题。
      

  7.   

    表单用post方法提交试试,昨天就遇到了。。
      

  8.   

    使用get方式提交的话,他不容易处理中文乱码,如果是一个注册页面的话,每填入一个汉字,使用get方式获取,必须每一个文本框的的值都进行一次转码的处理
    String b =  new String(request.getParameter("name").getBytes("iso-8859-1"));
    那如果是post话,直接使用request的方式整体转码
      

  9.   

    楼上的都用用呗,是不是from内没写method=‘post’啊
      

  10.   

    没写很复杂的程序,没有数据库。我是刚学jsp,Myeclipse也是刚接触,就只是熟悉一下环境。
    在一个页面login.jsp中只有一个form表单,里面只有一个文本框,一个提交按钮,另一个页面显示login.jsp提交的文本框的内容,仅此而已,但总是显示一串问号,我是不太懂为什么了,看了网上很多解决中文乱码的问题,但总是不能解决我这个,不知道为啥?
      

  11.   

    用的什么框架 spring的话 框架内将request传递给servlet的时候还要加一个编码的转换的 不然他会把request按照iso8859解析
      

  12.   

    在servlet的service方法上加request。setCharacterEncoding(“utf-8”) 要在最开始写 然后再写其他方法
      

  13.   

    jsp页面中的乱码问题解决了,我把所有的编码都变成utf-8,然后就可以了。但是之前也这样试过,不知道为什么现在运行显示正常了。
    后来我又写了个Java  Application,运行后,窗口中的Label应该显示的是中文,结果又显示的是乱码,最近貌似乱码附身一样,纠结啊。有谁遇到过一样的问题吗?
      

  14.   

    传url中文参数的时候,还是把它用encodeURI(encodeURI(中文参数)) 转化一下编码,然后在后台解析用urlDecode进行解析吧
      

  15.   

    强烈建议你把项目编码跟页面编码全换成UTF-8,玩这个gbk2312很纠结。
      

  16.   

    登陆MySQL:
         1、mysql的命令提示行(-u后面跟用户,-p后面跟密码):
                C:\>mysql -uroot -proot
    查看MySQL当前信息:
                 mysql> status
    MySQL乱码解决:
        1、查看当前数据编码方式端的:
                mysql> show variables like 'character_set_database';
        2、创建数据库的时候知道编码方式:
                mysql> create database xxx character set utf8;
        3、从控制台修改:
                mysql> alter database xxx character set utf8;
        4、从配置文件修改:
                找到C:\Program Files\MySQL\MySQL Server5.x\my.ini找到一句话:
                default-character-set=latin1
                把Latin1修改为utf8即可    
      

  17.   

     一、表单提交时出现乱码:
      在进行表单提交的时候,经常提交一些中文,自然就避免不了出现中文乱码的情况,对于表单来说有两种提交方式:get和post提交方式。所以请 求的时候便有get请求和post请求。
    以前我一直以为get请求和post请求方式出现的乱码的解决方式是一样的,但是今天才知道两种请求方式所产生的 乱码的解决方式是不同的。每种方式都有着不同的解决方法,之所以出现乱码,
    原因就在于get请求时,其传递给服务器的数据是附加在URL地址之后的;而post的请求时,其传递给服务器的数据是作为请求体的一部分传递给服务器。
    这也就导致了对它们所产生的乱码的处理方式是不同的。
      1、客户端的get请求
      对于不同的请求方式,解决乱码的问题也是不一样的,对于客户端的get请求来说,服务器端处理要想不出现乱码,解决这个问题稍微复杂一些,
    需要 用到String类型的构造函数,其中的一个构造函数就是用指定的编码方式去解码,一般都用“UTF-8”的方式。
    只要在服务器端将请求得到的参数重新构 造成一个字符串就行了。如下所示:
      String stuname = request.getParameter("stuname");
      String str = new String(stuname.getBytes("ISO-8859-1"),"utf-8")
      经过构造之后,客户端输入中文,且表单时get请求的情况下,str就变成了中文了。如果请求参数比较多,最好将它封装成一个工具类:
      public class MyUtil
      {
      public static String getNewString(String str) throws UnsupportedEncodingException
      {
      return new String(str.getBytes("ISO-8859-1"),"UTF-8");
      }
      }
      String stuname= MyUtil.getNewString(request.getParameter("stuname"));
      2、客户端的post请求
      对于客户端的post请求来说,处理乱码的问题就比较简单了,因为请求的数据时作为请求体的一部分传递给服务器的,所以只要修改请求内的编码就行了。只要在服务器端的最开始处将请求的数据设置为“UTF-8”就行了,输入如下语句:
      request. setCharacterEncoding(“UTF-8”);
      这样用户在服务器端获取到的中文数据就不再是乱码了。
      二、超链接时出现乱码(低版本浏览器不行IE6)
      在Web开发中,挺多的时候都是通过超链接去传递中文参数的,这也会导致在显示的时候也会出现乱码,对于超链接来说,它实际上是向服务器端发送 了一个请求,而它发出的请求是属于get请求,所以对于超链接的乱码来说,它处理乱码的方式和表单的get请求出现乱码的方式是一样的。
      String stuname= MyUtil.getNewString(request.getParameter("stuname"));
      三、重定向时出现乱码(低版本浏览器不行IE6)
      有时写上response的sendRedirect()方法进行重定向时也会出现乱码,重定向时实际上也是向服务器发送了一个请求,所以解决乱码的方法和和上面是一样的。
      四、浏览器版本低导致的乱码
      上网的时候,有时提交的一些信息在地址栏显示的是“%2C%C6%CC%C6”的字样,其实这都是防止出现乱码进行的解决方案,如果你的浏览器 是IE6或以下版本,则我们的第二种情况和第三种情况会出现乱码(尤其是当中文是奇数的时候),这就不好使了所以我们必须采用另一种比较实际的作法:
      在java.net包中提供了URLEncoder类和URLDcoder类,这两个类又分别提供了encode和decode两个静态方法,分别用于进行编码和解码。我们将要传递的中文参数进行编码之后,在传递给服务器,服务器解码之后,就可以显示中文了。
      进行编码:URLEncoder.encode(stuname,”UTF-8”)
      传递给服务器:<a href=”/1.jsp?stuname<%=stuname%>”>传递</a>
      进行解码:URLDecoder.decode(stuname,”UTF-8”);
      这样就可以得到传递过来的中文参数了,我发现许多网站用的都是这种方式解决中参数的。
      五、返回浏览器显示的乱码
      在Servlet编程中,经常需要通过response对象将一些信息返回给浏览器,给我们的客户端,而我们在服务器端显示的中文,但是响应给 客户端浏览器却是乱码,这主要是由于response对象的getWriter()方法返回的PrintWriter对象默认使用“ISO- 8859-1”字符集编码进行Unicode字符串到字节数组的转换,由于ISO8859-1字符集中根本就没有包含中文字符,所以Java在 进行转换的时候会将无效的字符编码输出给客户端,于是便出现了乱码,为此ServletResponse接口中便定义了 setCharacterEncoding、setContentType等方法来指定getWriter方法返回的PrintWriter对象所使用的 字符集编码,所以我们在写Servlet程序中,在调用getWriter方法之前设置这些方法的值。我们为了防止乱码,经常将以下两条语句一起写上:
      response.setContentType(“text/html;charset=utf-8”);
      response. setCharacterEncoding(“UTF-8”);
      只要编写Servlet文件中含有响应给客户端的信息,那么就要写上这两句话。最好写上第二句话,因为它的优先级高,它的设置结果将覆盖setContentType等方法设置的字符编码集。
      六、修改Tomcat的编码
      在上述的get请求所导致乱码问题中,还有一种解决的方案,我们常用Tomcat作为运行Servlet和JSP的容器,而Tomcat内部默 认的编码是ISO-8859-1,所以对于get请求方式,其传递的数据(URI)会附加在访问的资源后面,其编码是Tomcat默认的,如果修改该 URI的编码,那么对于所有的get请求方式便不会出现乱码了包括上边说的重定向和超链接,在Tomcat的配置文件server.xml中找到修改 Tomcat的端口的地方,在其内部加入URIEncoding属性,设置为和你的项目中所设的编码一样的值,这里全部都是UTF-8。如下所示:
      <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8" />
      在编写Servlet和JSP的时候,为了避免出现乱码,最重要的就是:采用一致的编码,如果编码都一致了,肯定不会出现乱码
      

  18.   

    问号才是乱码(字符集不正确),方框是选定的字体不支持汉字,换一个支持汉字的字体就正常了,比如宋体,Arial MS Unicode, 微软雅黑等。
      

  19.   

    有可能是开发环境的编码格式不一定对,
    可以改成utf8也可以改成gbk,可以试一下
      

  20.   

    在Myeclipse中怎么选定字体?我不明白
      

  21.   

    request.setCharacterEncoding(arg0);
    response.setCharacterEncoding(charset);
    把请求 响应的参数转一下码
      

  22.   

    你有一个事实忘记了,你的程序已经运行了之后出错了,这跟 MyEclipse 这个 IDE 已经没有关系了,IDE 只是用来编写程序的,并不管程序运行后出现的事故 。你的代码中应该明确地
     
    myLabel.setFont("宋体“);
    我也不确定怎么把所有的组件都改成一个默认的字体。
      

  23.   

    我的程序没有问题。现在问题解决了。在Myeclipse中编写窗口程序,如果程序中有中文要显示,应该用国标GBK,如果是utf-8的默认编码就会出现这种情况。anyway,谢谢楼上大神们的回答,学了很多东西,果然交流学习最有效率!