<%@ page pageEncoding="gb2312" %> 
绝对有用。

解决方案 »

  1.   

    <% @page contentType="text/html;charset=GBK" %> 
    要写上这句
      

  2.   

    <%@ page pageEncoding="gb2312" %>
      

  3.   

    <% @page contentType="text/html;charset=gb2312" %><%@ page pageEncoding="gb2312" %>这两句有区别吗?
      

  4.   

    可看看下面方法如下所示:// 转换由表单读取的数据的内码到 GB2312
    public String toChi(String input) {
    try {
    byte[] bytes = input.getBytes("ISO8859-1");
    return new String(bytes);
    }catch(Exception ex) {
    }
    return null;
    }// 对给定字符进行 URL 编码
    public String encode(String value) {
    if(isEmpty(value)) return "";
    return java.net.URLEncoder.encode(value);
    }// 对给定字符进行 URL 解码
    public String decode(String value) {
    if(isEmpty(value)) return "";
    return java.net.URLDecoder.decode(value);
    }.
       问题1. 浏览器中看到的 JSP 页面中的汉字怎么都成了 '?' ?
    可能原因如下: 您的页面中没有指定页面的字符集为中文. 解决方法(适用于Tomcat 4.0 和 Tomcat 4.1)是在页面中添加如下代码:
    <%@ page contentType="text/html;charset=gb2312" %>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">   问题2. 通过 POST 方法提交的表单的汉字都显示为乱码(在 Tomcat 4.0 下正常, Tomcat 4.1 下出现).
    可能原因如下: POST 提交的字符串都是 ISO8859-1 编码的, 只要把它的字符集转换到中文就行了. 解决方法如下(适用于 Tomcat 4.1):
    // 单个的参数
    String result = toChi(request.getParameter("parameterName"));
    // 多个参数
    String values[] = request.getParametervalues(name);
    if(values != null) {
    for(int i = 0; i < values.length; i++) {
    values[i] = toChi(values[i]);
    }
    }   问题3. 通过 GET 方法提交的表单的汉字都显示为乱码(在 Tomcat 4.0 和 Tomcat 4.1 下都出现).
    可能原因如下: GET 提交的字符串都是 ISO8859-1 编码的, 只要把它的字符集转换到中文就行了. 解决方法如下(适用于 Tomcat 4.1, Tomcat 4.0 下不能用于 page.jsp?username=中文):
    // 单个的参数
    String result = toChi(request.getParameter("parameterName"));
    // 多个参数
    String values[] = request.getParametervalues(name);
    if(values != null) {
    for(int i = 0; i < values.length; i++) {
    values[i] = toChi(values[i]);
    }
    }   问题4. Cookie 中不能写入汉字或者汉字无法正确显示.
    可能原因如下: Tomcat 4.0 下自动把 Cookie 做了编码为 ISO8859-1 的存储, 而 Tomcat 4.1 下的 JSP 引擎不支持包含含有汉字的 Cookie.
    Tomcat 4.0 下的解决方法:
    // 根据 Cookie 名称得到请求中的 Cookie 值, 如果 Cookie 值是 null, 则返回 ""
    public String getCookievalue(HttpServletRequest request, String name) {
    Cookie[] cookies = request.getCookies();
    if(cookies == null) return "";
    for(int i = 0; i < cookies.length; i++) {
    Cookie cookie = cookies[i];
    if(cookie.getName().equals(name)) {
    // 需要对 Cookie 中的汉字进行 URL 反编码, 适用版本: Tomcat 4.0
    return decode(cookie.getvalue());
    }
    }
    // A cookie might not return a null value, may return a ""
    return "";
    }
    Tomcat 4.1 下的解决方法:
    // 写入包含汉字 Cookie 的方法
    response.addCookie(new Cookie("cookieName", encode("汉字")));
    // 得到 Cookie 值的方法(同 Tomcat 4.0 的解决方法)
    public String getCookievalue(HttpServletRequest request, String name) {
    Cookie[] cookies = request.getCookies();
    if(cookies == null) return "";
    for(int i = 0; i < cookies.length; i++) {
    Cookie cookie = cookies[i];
    if(cookie.getName().equals(name)) {
    // 需要对 Cookie 中的汉字进行 URL 反编码, 适用版本: Tomcat 4.0
    return decode(cookie.getvalue());
    }
    }
    // A cookie might not return a null value, may return a ""
    return "";
    }   问题5. 在 Tomcat 4.0 下 GET 请求(如: page.jsp?username=中文) 无法返回原来的值.
    原因: 与 Tomcat 引擎有关, 不论是否转换内码, 均无法返回原来的值, 但是有一个替代方法, 如下:
    将 URL 地址改变为 "page.jsp?username=" + encode("中文")
    然后使用下列代码取回参数:
    // 单个的参数
    String result = toChi(request.getParameter("parameterName"));   问题6. JavaBean 里使用 <jsp:setProperty id="propName" property="*" /> 出现中文问题.
    暂时未提供解决方案.
      

  5.   

    你需要在你包含的页面也加入
    <% @page contentType="text/html;charset=gb2312" %>
      

  6.   

    sMsg=new String(sMsg.getBytes("ISO8859-1"),"GBK")
      

  7.   

    GBK是什么意思?我也出现了乱码!
    我现在的情况是要根据用户的选择来确定当前页面是简体中文还是繁体中文!把字符串存入数据库的时候,我用了sMsg=new String(sMsg.getBytes("GBK"),"ISO8859-1")后在简体中文下是显示正常,可是在繁体中文的情况下,就不正常了,请求解决方案。
      

  8.   

    <@ include='...'>
    的文件中不能再用<% @page contentType="text/html;charset=gb2312" %>
    因为在JBuiler9中它会提示index.jsp中已经使用此句,在head.jsp中不能重复使用的。
    后来,我用通过<bear:message ..../>从ApplicationResources中取信息才不出出现问题
    ,因为已经先把ApplicationResources进行了转换。