function getJsM() { 
var cvar  = "中文"; 
alert("cvar=="+cvar  ); 
document.getElementsByName("cvar")[0].value=cvar  ; 

<input type="text" name="cvar" onclick="getJsM()" value="���"> 
alert出来没问题是中文,页面上cvar文本框显示也是中文, 
可是我右键属性的时候。看到的是乱码,所以我一提交后台也是乱码!我在后台转了很多编码都不行,出来没一种不是乱码的!而且我还要在url传中文真不知道该怎么办啊?
我的文件是utf-8的,我用Eclipse写的,肯定是utf-8没问题,
我的页面上也写了下面的句子啊
<%@ page contentType="text/html; charset=UTF-8"%> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
但是还有有中文乱码啊

解决方案 »

  1.   


     要在url中传中文的话,在后台取参数的时候,这样取试试,
    String cvar = new String(request.getParameter("cvar").getBytes("8859_1"), "utf-8");
      

  2.   

    答:我测试过,在我这儿,一切正常啊。
    测试代码:
    网页:cq.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>cq.html</title>

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
        <meta http-equiv="description" content="this is my page">
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">
        
        <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  </head>
      
      <body>
      <script type="text/javascript">
      function getJsM() { 
    var cvar  = "中文"; 
    alert("cvar=="+cvar  ); 
    document.getElementsByName("cvar")[0].value=cvar  ; 

      
      </script>
        测试页面. <br>
        <form action="/web_chart/index.jsp" method="POST">
        <input type="text" name="cvar" onclick="getJsM()" value="���">     <input type="submit" value="提交" />
        </form>
        
      </body>
    </html>测试的JSP:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        
        
        <title>测试</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 

    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      
      <body>
        输出结果是: <br>
        <% request.setCharacterEncoding("UTF-8"); %>
        <%=request.getParameter("cvar") %>
      </body>
    </html>运行时,提交后汉字很正常啊。没有乱码啊。Tomcat 5.5.23+MyEclipse 6.0
      

  3.   


    <html>
    <head><title>标题</title>
    <script type="text/javascript">
    function getJsM() {
    var cvar  = "中文";
    alert("cvar=="+cvar  );
    document.getElementsByName("cvar")[0].value=cvar  ;
    }
    </script>
    </head>
    <body>
    <form>
    <input type="text" name="cvar" onclick="getJsM()"> 
    </form>
    </body>
    </html>
    我试了一下,在我这里没问题。
      

  4.   

    过滤器:
    public class EncodingFilter implements Filter { public void destroy() {
    // TODO Auto-generated method stub

    } public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {
    request.setCharacterEncoding("utf-8");
    response.setCharacterEncoding("utf-8");
    chain.doFilter(request,response);

    } public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub

    }}
    web.xml<filter>
    <filter-name>filer</filter-name>
    <filter-class>类路径.EncodingFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>filer</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  5.   

    很感谢大家啊,还专门测试一下啊!1.String cvar = new String(request.getParameter("cvar").getBytes("8859_1"), "utf-8");
    这样的我写过啊不行啊!我基本把所有的编码都测试了一次啊 utf8 gb2312 gbk gb8310 8859-1 这些都测试了2.大家测试ok!是不是因为我这里国际化的原因啊。我的写法是<script>
     var vChina=  '<bean:message key='testChina'/>'; function getJsM() {
        document.getElementsByName("cvar")[0].value=vChina;
     }
    </scirpt> 
    <input type="text" name="cvar" onclick="getJsM()" value="<%=form.getXXX%>" >
    然后提交以后后台request.getParameter("cvar");就是乱码啊!
    3.系统本身有过滤器啊!现在
     一.文件是用MyEclipse 选择的utf-8格式啊,所以文件肯定是utf-8的。
     二.页面写了
        <%@ page contentType="text/html; charset=UTF-8"%>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
     三.也用了过滤器啊
     四.是jboss好象容器里不用设置编码!实在不知道怎么办了啊.
      

  6.   

    <init-param>
    <param-name>encoding</param-name>
    <param-value>gbk</param-value>
    </init-param>汗发现filter是gbk的..........................修改成utf-8不乱了啊...
    但是我又不能修改filter,然后我自己转了半天也没一个编码能不出乱码的我该怎么办啊?
      

  7.   

    String cvar = new String(request.getParameter("cvar ").getBytes( "GBK"), "utf-8 "); 
      

  8.   

    String cvar = new String(request.getParameter("cvar ").getBytes( "GBK"));
      

  9.   

    想想  把有设置编码的地方全设置下  浏览器页面 jsp页面  eclipse  最后就是2楼的getParameter
      

  10.   

    Eclipse workspace编码设置。有可能是那里的问题
      

  11.   

    String cvar = new String(request.getParameter("cvar ").getBytes( "GBK"));
      

  12.   

    post方式提并的数据,过滤才有用
    get方式提交,要修改配置文件中的参数,tomcat下是在server.xml中加一句uriencode=''
      

  13.   

    过滤器只过滤请求和相应中的字符编码格式!楼主你设置下URL传递格式试试!
      

  14.   

    你别用eclipse编码
    用其他编辑工具打开一下,看是不是乱码 
      

  15.   

    孙鑫讲Java中文乱码问题的解决方案 收藏 
    如果您从事IT行业一年以上,就不要看了,转载这篇文章是因为讲的很好,我就是看这篇文章彻底弄懂了Java乱码的解决方案。
    以下段落时转载内容。
    只要掌握了中文乱码问题产生的原因,然后对症下药,就可以顺利地解决这些问题。下面我们对容易产生乱码问题的场景进行分析,并提出解决方案。
    1.以POST方法提交的表单数据中有中文字符
    由于Web容器默认的编码方式是ISO-8859-1,在Servlet/JSP程序中,通过请求对象的getParameter()方法得到的字符串是以ISO-8859-1转换而来,这是导致乱码产生的原因之一。为了避免容器以ISO-8859-1的编码方式返回字符串,对于以POST方法提交的表单数据,可以在获取请求参数值之前,调用request.setCharacterEncoding("GBK"),明确指定请求正文使用的字符编码方式是GBK。在向浏览器发送中文数据之前,调用response.setContentType("text/html;charset=GBK"),指定输出内容的编码方式是GBK。
    对于JSP页面,在获取请求参数值之前,写上下面的代码:
    <%request.setCharacterEncoding("GB2312");%>
    为了指定输出内容的编码格式,设置page指令contentType属性,如下:
    <%@ page contentType="text/html; charset=GBK" %>
    在Web容器转换JSP页面后的Servlet类中,会自动添加下面的代码:
    response.setContentType("text/html; charset=GBK");
    2.以GET方法提交的表单数据中有中文字符
    当提交表单采用GET方法时,提交的数据作为查询字符串被附加到URL的末端,发送到服务器,此时在服务器端调用setCharacterEncoding()方法也就没有作用了。我们需要在得到请求参数的值后,自己做正确的编码转换。
    String name = request.getParameter("name");
    name=new String(name.getBytes("ISO-8859-1"),"GBK");
    在第一行,调用getParameter()方法得到的字符串name的Unicode值是以ISO-8859-1编码转换而来,调用name.getBytes("ISO-8859-1"),将得到原始的GBK编码值,接着,对new String()的调用将以GBK字符集重新构造字符串的Unicode编码。
    为了方便从ISO-8859-1编码到GBK的转换,我们可以编写一个工具方法,如下:
    public String toGBK(String str)
                     throws java.io.UnsupportedEncodingException
    {
        return new String(str.getBytes("ISO-8859-1"),"GBK");
    }
    3.在数据库中存储和读取中文数据
    对于大多数数据库的JDBC驱动程序,在Java程序和数据库之间传递数据都是以ISO-8859-1为默认编码格式,所以,我们在程序中向数据库存储包含中文的数据时,JDBC驱动程序首先把程序内部的Unicode编码格式的数据转化为ISO-8859-1编码,然后传递到数据库中,加上数据库本身也有字符集,这就是为什么我们常常在数据库中读取中文数据时,读到的是乱码。
    要解决上述问题,只需要将数据库默认的编码格式改为GBK或GB2312即可,不同的数据库还提供了另外的方式来处理字符编码转换的问题,读者在实际应用过程中,可针对具体情况再做具体处理,只要理解了编码转换的过程,就能找到问题的所在,进而解决问题。
    4.Servlet/JSP在不同语言系统的平台下运行
    有时候,我们在中文系统平台下开发的Web应用程序移植到英文系统平台下,在Servlet和JSP中直接书写的中文字符串在输出时,将显示为乱码。这是因为在编译Servlet类或者JSP文件时,如果没有使用-encoding参数指定Java源程序的编码格式,javac会获取本地操作系统默认采用的字符集,以该字符集将Java源程序转换为Unicode编码保存到内存中,然后将源程序编译为字节码文件(字节码文件采用的是UTF-8编码),保存到硬盘上。
    在英文平台下,采用的默认编码格式是ISO-8859-1,所以在编译转换后,执行输出时,原先在源文件中书写的中文字符串就变成了乱码。
    要解决这个问题,在编译Servlet类的源程序时,可以用-encoding参数指定编码为GBK或GB2312,例如:
    javac –encoding GBK HelloServlet.java
    对于JSP页面,只要在page指令中用contentType属性或pageEncoding属性指定编码格式为GBK或GB2312,Web容器就可以正确转换和编译JSP文件了。例如:
    <%@ page contentType="text/html; charset=GBK" %>

    <%@ page pageEncoding="GBK" %>
    在实际的Web应用中,乱码问题产生的原因多种多样,然而只要我们理解了字符编码的转换过程,仔细地分析乱码产生的原因,找到问题的关键,就能对症下药,解决问题。
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xxd851116/archive/2009/06/13/4267044.aspx
      

  16.   

    前台var data=encodeURIComponent(encodeURIComponent("your data"));
    后台java.net.URLDecoder.decode(request.getParameter("data"),"utf-8")