刚才那个页面的乱码是这样的,?ì???¤±¨??×ò?ì?????????ì??·????ó?ì±?·????????÷?ì?????????????????????¤?????°???????ú???????¤??????°ì??2007?ê?????????????á?????????¤???????????????°???ú×????????????±??????????????????2006?ê?????????????????ó??????????????????另一个页面也是基本上相同的代码,但<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>乱码是这样的¹¤ÐÐÍøÕ¾ä¯ÀÀÁ¿Ê×´ÎÔ¾¾ÓÈ«ÇòÒøÐÐÀàÍøÕ¾µÚÒ»¡£ÇëÄú¹Ø×¢ÎÒÐиöÈËÍøÉÏÒøÐн»Ò×½

解决方案 »

  1.   

    刚才那个页面的乱码是这样的,?ì???¤±¨??×ò?ì?????????ì??·????ó?ì±?·????????÷?ì?????????????????????¤?????°???????ú???????¤??????°ì??2007?ê?????????????á?????????¤???????????????°???ú×????????????±??????????????????2006?ê?????????????????ó??????????????????另一个页面也是基本上相同的代码,但<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>乱码是这样的¹¤ÐÐÍøÕ¾ä¯ÀÀÁ¿Ê×´ÎÔ¾¾ÓÈ«ÇòÒøÐÐÀàÍøÕ¾µÚÒ»¡£ÇëÄú¹Ø×¢ÎÒÐиöÈËÍøÉÏÒøÐн»Ò×½
      

  2.   

    我怀疑jdk6.0.03问题,就把它删了,然后从我的个人软件备份中拷贝过来一个jdk6.0.03(不用安装版本)
      

  3.   

    <%@ page contentType="text/html;charset=GBK"  pageEncoding="GBK"%>
    <%@ page import="java.util.*"%>页面前1行改成这个
      

  4.   

    应该是你数据库的字符集,两台机安装的不一样,你的字符集是非GBK的,别人的安装的时候是GBK的,MSSQL没用过,不知道怎么改,MYSQL应该是安装的时候定的,你可以GOOGLE下,或者从新安装下,注意下数据库的编码,或者把数据库给改过来
      

  5.   


    Java   Web应用中的乱码主要产生在以下几个方面和基本的解决方法: 1,页面乱码 
    默认为ISO8859-1,通过@page指令解决。 
    2,请求响应乱码 
    请求/响应的编码默认为ISO8859-1,通过过滤器设置request和response的 
    setCharacterEncoding方法来解决。 
    3,数据库乱码(以数据库的客户端默认编码) 
    对于Oracle和SQL   Server没有什么问题,对于MySQL可以在连接字符串后面加上 
    ?useUnicode=true&characterEncoding=gb2312来解决,或者修改my.ini的 
    MySQL参数文件。 
    4,URL参数乱码 
    默认为ISO8859-1,这个最为麻烦,如果使用Tomcat,需要修改server.xml,把 
    其中的两个Connector元素加上URIEncoding="gb2312"属性,对于Firefox这就 
    可以了,但是对于IE这还不够,需要手工将中文字符使用URLEncoder.encode方法 
    转为URL编码,就是采用%XX%XX%XX这样的格式。 总之Java   Web开发的过程就是与乱码不断进行斗争的过程。也是这里的一个贴子,我copy你看看吧怎么解决吧...
      

  6.   

    很多人 特别是新手 做j2ee 项目中
    总能受困于 这样或那样的编码问题这里讨论下 新手学习,高手指教 一起研究下
    (以 tomcat mysql 做例子 我推荐所有的编码采用utf-8)1 工程
    工程内所有的 .java .jsp .xml .txt 都有默认的编码 默认的是系统环境的编码
    我们中文系统通常是GBK 推荐都采用utf-8
    utf-8 的时候 你编译 生成doc 可能会遇到乱码(特别是采用ant 的时候,生成doc你几乎100%会遇到)解决方法 以ant 为例子
    编译 注意 encoding 参数
    <target name="build" >
           <mkdir dir="${build.dir}" />
           <javac encoding="utf-8" destdir="${build.dir}" target="1.3" debug="true" deprecation="false" optimize="false" failonerror="true">
               <src path="${src.dir}" />
               <classpath refid="master-classpath" />
           </javac>
       </target>生成doc 注意 encoding 和 charset
    <target name="doc">
    <mkdir dir="doc" />
    <javadoc charset="utf-8" encoding="utf-8" packagenames="${packages}" sourcepath="src" destdir="doc" author="true" version="true" use="true" splitindex="true" >
    <classpath refid="master-classpath" />
    </javadoc>
    </target>这里 的encoding 就是指的你 java 文件的编码格式 javac 和javadoc 都有这个参数
    charset 指的是 生成 doc 后的编码方式 javadoc 的参数2 数据库
    mysql 的编码最复杂 从4以后 mysql 号称支持多编码 它更灵活了 我们也更麻烦了
    mysql 有4个级别的编码
    系统级
    库级
    表级
    sql语句级
    请保持采用统一的编码 推荐utf-8
    其它数据库要简单的多 一般都是一种编码3 web server
    tomcat 为例
    tomcat server.xml 中一个参数
    <Connectorport="8080" maxHttpHeaderSize="8192"
    maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
    enableLookups="false" redirectPort="8443" acceptCount="100"
    connectionTimeout="20000" disableUploadTimeout="true" URIncoding="utf-8"/>
    经测试 这个URIncoding 参数主要是 get 方法中采用编码4 jsp 显示层
    第1条中说明了 jsp 文件本身的格式
    很多朋友采用eclipse +myeclipse 生成jsp
    它自动生成一个头<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    不要误解 这句话不能保证你在ie里看到的不是乱码
    pageEncoding它的意思是 这个页面本身采用的是 utf-8 (似乎只在eclipse 里有效果 ,我不确定)
    为了在ie 里不乱码  你还得加一句 <%@ page contentType="text/html; charset=UTF-8"%>
    它不能在(myeclispe)自动生成  推荐修改 myeclipse的模板 在下边的目录里
    MyEclipse\eclipse\plugins\com.genuitec.eclipse.wizards_4.0.1\Templates
    里边的jsp模版 你加上<%@ page contentType="text/html; charset=${encoding}"%>5 filter
    自从tomcat 4 以后 网上就流传了一个SetCharacterEncodingFilter 过滤器 搜一下有很多
    很好用 web.xml 中加入
    <filter>
       <filter-name>Set Character Encoding</filter-name>
       <filter-class>filters.SetCharacterEncodingFilter</filter-class>
       <init-param>
       <param-name>encoding</param-name>
       <param-value>utf-8</param-value>
       </init-param>
    </filter>
       <filter-mapping>
       <filter-name>Set Character Encoding</filter-name>
       <url-pattern>/*</url-pattern>
       </filter-mapping>6 资源文件
    首先保证 文件本身是utf-8
    然后部署的时候用 native2ascii 转换
    这里给出 ant 里的例子
    <native2ascii encoding="utf-8" dest="${web.dir}/WEB-INF/classes" src="${src.dir}" includes="**/*.properties" />
      

  7.   

    linpyi , 我在我本机部署的时候将db.java类中的数据库设置为那个"和我相反乱码的"机器的数据库时,同样是乱,我感觉不是数据库的问题。
    而且sqlserver好像不能设置编码,mysql可以。
      

  8.   

    Look!
    http://blog.csdn.net/joyous/archive/2007/02/07/1504274.aspx
      

  9.   

     推荐都采用utf-8 ,支持国际化
      

  10.   

    严格的说,你的编译环境的JDK必须与应用服务器的JDK一样,且都是标准的才行。还有就是你的数据库编码与编译环境的编码设置
    我以前出现过类似情况,然后换了jdk并将数据库与编译环境的编码设置一致就ok了,希望对你有帮助!
      

  11.   

    coolwzjcool,恩,有可能是jdk和tomcat的问题。我再看看
      

  12.   

    如果是MySQL 那么把联接改成类似这样试试
    jdbc:mysql://localhost:3306/test?Unicode=true&amp;characterEncoding=GBK
      

  13.   

    当然也可以把GBK换成UTF8根据你的需要来
      

  14.   

    建议使用过滤器处理(Filter),原代码我给贴出来,要在web.xml进行配置.可以设置编码的,不过要编码统一才可以的SetCharacterEncodingFilter.java 文件如下
    package com.shop.filter;import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.UnavailableException;public class SetCharacterEncodingFilter implements Filter {
        protected String encoding = null;
        protected FilterConfig filterConfig = null;
        protected boolean ignore = true;    public void destroy() {        this.encoding = null;
            this.filterConfig = null;    }
        public void doFilter(ServletRequest request, ServletResponse response,
                             FilterChain chain)
    throws IOException, ServletException {        // Conditionally select and set the character encoding to be used
            if (ignore || (request.getCharacterEncoding() == null)) {
                String encoding = selectEncoding(request);
                if (encoding != null)
                    request.setCharacterEncoding(encoding);
            } // Pass control on to the next filter
            chain.doFilter(request, response);    }
        public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig;
            this.encoding = filterConfig.getInitParameter("encoding");
            String value = filterConfig.getInitParameter("ignore");
            if (value == null)
                this.ignore = true;
            else if (value.equalsIgnoreCase("true"))
                this.ignore = true;
            else if (value.equalsIgnoreCase("yes"))
                this.ignore = true;
            else
                this.ignore = false;    }
      
        protected String selectEncoding(ServletRequest request) {        return (this.encoding);    }
    }
    还要在web.xml配置,在web.xml加入一下代码
    <filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class><!--类的路径-->
    com.shop.filter.SetCharacterEncodingFilter
    </filter-class>
    <init-param>
    <param-name>encoding</param-name>
                             <!--编码格式-->
    <param-value>GB2312</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  15.   

    如果还是不行,可以在添加数据库连接代码,sql server中odbc连接方法jdbc:odbc:sa;characterEncoding=GB2312
    只要加上这个characterEncoding=什么编码,连接时加上,
    试试看吧
      

  16.   

    你用的是jdbc驱动吗?如果是的话 可以更换一下版本试一下,有好几个版本是不同年份的,大小也不一样。
      

  17.   

    我把那个人的tomcat的整个目录都拿来了(包括tomcat和webapp目录里面的所有东西),在我机器上运行后还是乱码。应该是操作系统的问题么?
      

  18.   

    这样做吧,在你打开乱码的页面上,右键--> 编码 然后选择不同的编码方式,看看用哪个字符集的时候可以出现正确结果,你就知道你的编码哪个环节出错了(也可以证明是不是IE或OS的问题了),Try...
      

  19.   

     我也是被乱码问题糊涂了很多次了,经过摸索,我总结出一些规律。虽然不一定是最佳方案,
    但对于大部分情况来说,够了。
    每次项目前,
    1 将tomcat设置为UTF-8
    2 将数据库编码设为UTF-8
    3 将所有页面编码,包括js文件的编码,都设为UFT-8
    4 所有表单提交,request等,都设为UTF-8
    虽然有不少朋友认为用GBK也可以显示中文,但用GBK遇到乱码的机会要比用UTF-8要大得多。
    后来我们做项目,再不提GBK,倒省了不少事,以后项目全部UTF-8,不然每次都讨论用什么
    编码
      

  20.   

    这个原因是你的类文件的编码格式和别人的不一样造成的.也有可能与操作系统的字符集有关.最好的方法是用统一的base64编码格式进行编码解码,而不是用iso-8859-1解码,代码如下
    // 将 s 进行 BASE64 编码 
    public static String getBASE64(String s) { 
    if (s == null) return null; 
    return (new sun.misc.BASE64Encoder()).encode( s.getBytes() ); 
    } // 将 BASE64 编码的字符串 s 进行解码 
    public static String getFromBASE64(String s) { 
    if (s == null) return null; 
    BASE64Decoder decoder = new BASE64Decoder(); 
    try { 
    byte[] b = decoder.decodeBuffer(s); 
    return new String(b); 
    } catch (Exception e) { 
    return null; 

      

  21.   

    在 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 的后面加上<%
    response.setContentType("text/html;charset=GBK");
    request.setCharacterEncoding("GBK");
    %>且确认一下保存jsp文件时是否保存成gbk的编码类型
      

  22.   

    <% 
    response.setContentType("text/html;charset=GBK"); 
    request.setCharacterEncoding("GBK"); 
    %> jdbc:mysql://localhost:3306/test?Unicode=true&amp;characterEncoding=GBK这两项很重要!!
      

  23.   

    不同的乱码不同的解决方法,根据你自己的情况你可以分析下,找到你出现乱码的原因,大家都不知道你现实的情况,只能说一些通用的
    楼上说的也可以试下,这是我一项目的配制文件,可以参考下
    ##please check your server parameter##
    #dbDriver of mysql#
    dbDriver=com.mysql.jdbc.Driver
    #dbUrl of mysql #
    dbUrl=jdbc:mysql://localhost/crm?useUnicode=true&characterEncoding=GBK
    #your mysql connection user#
    dbUsername=root
    #the user password#
    dbPassword=123456
      

  24.   

    request.setCharacterEncoding("GBK")
    response.setCharacterEncoding("GBK")
      

  25.   

    windowsxp的字符编码怎么设置?
      

  26.   

    debug一下,看看是哪个地方开始乱码的,全部设置成utf-8不能解决根本问题,确定问题点,再实施方案,这叫对症下药
      

  27.   

    <%db db = new db();
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        conn = db.conn();
        ps = conn.prepareStatement("SELECT * FROM news");
        rs = ps.executeQuery();
        while(rs.next()){        String info = rs.getString("newscontent");
            String info_t = new String (info.getBytes("ISO8859-1"),"GBK");
            %>
            <P><font size="2"><%=info_t %></P>
            <%// 这里的info就乱了
      

  28.   

    按有几个群,你不妨加进去,可以和大家一起讨论啊.........46986340,28039577,4804620                                                                                                                                                                                                                                                               
    在那里看看有无能回答你的,谢谢,LZ,甭忘了给俺分哦,谢谢LZ
      

  29.   

    呵呵 ,这个问题挺恶心的,用iso-8859-1就可以了,呵呵呵
      

  30.   

    呵呵,我也碰到过这个问题,而且我和你的情况差不多,但是我是在我的机器上,有一会是乱码,然后我就public static String toChinese(String originString) {
          try {
              if(null==originString&&originString.equals("")) {
                  return null;
              }else {
                  return new String(originString.getBytes("ISO8859_1"), "GB2312");
              }
          }catch(Exception e) {
             e.printStackTrace();
           return null;
          }
      }去转换就不乱吗了,然后后来我这样转了的话变乱吗,不转的话就不乱吗,后来仔细分析发现我这两次之间重装过1次数据库,注意一点就可以了,将数据库,程序,页面,服务器是GBK就都是GBK,是UTF-8就全部都用UTF-8,如果不一致就可能乱吗。。MYSQL的字符级就比较麻烦,数据库,表,字段的COLLTION和CHARSET都要改成一致的,建表的时候字段也最好加上CHARSET,这样才能保证不出现乱码,不知道自己说的对不对不,希望可以给你带来点帮助
      

  31.   

    我有过这种问题,是TOMCAT版本的问题,你看看两台机子的版本一样吗?
      

  32.   

    YBZYCM ,  不是,后来我把那个人的tomcat的根目录(和里面的webapp都包括在内)都挪到我机器上了,还是乱。还有,解决了一定和大家说。
      

  33.   

    1 你的描述可能有不准确的地方,有时候程序碰到问题做着做着自己就晕了。(举个例子:比如你以为连上了那人的数据库,在eclipse中已经改了,实际上在tomcat中没有被发布过来,不知道你能不能保证你的描述100%正确)2 对于非utf-8的代码集很容易出错,也许你的机器没错,其他人的机器也没错,但是还是出问题,肯能是哪个应用软件或各种盗版操作系统之间的区别导致;也许你发现了eclipse、tomcat、windows在特定条件下的bug。(我的意思是说这也许是前面提的三个个系统的bug,你并没有错)以后如果不想发生这种情况,建议使用utf-8,或者把你的所有地方都改成utf-8。如果你的程序要正式上线,你根据服务器是否乱码的情况做相应的修改或不该,如果为了长期着想,就都改成utf-8,加上filter。做程序有时候就是比较奇怪,你将tomcat、j2ee&jdbc、sql2K 每个的应用水平都上升两个层次之后可能就知道你的问题出在哪里了,现在不用过多关心。