<body onload="document.charset='UTF-8';" >

解决方案 »

  1.   

    给你一个类;
    public class GBKConvert {
      public GBKConvert() {
      }
      public static String isoToGbk(String inStr) {
        // 将字符串的内码从ISO8859-1转换到GBK    String outStr = inStr;
        try {
          if (inStr == null) {
            return "";
          }
          else {
            outStr = "";
            try {
              outStr = new String(inStr.getBytes("ISO8859-1"), "GBK");
            }
            catch (Exception ex) {
              ex.printStackTrace();
            }      }
        }
        catch (Exception ex) {
          ex.printStackTrace();
        }
        return outStr;
      }}
    转换时调用它就行了。
      

  2.   

    你写的数据库中后是否是乱码,若是乱码的话,就说明你往数据库存数据是就发生乱码,这就需要你在写库前对字符串进行转码;如果写到数据库中的字符串是正确的,哪就说明在输出时需转码;还有一种情况就是你在你的jsp中加入如下行<%@ page contentType="text/html;charset=GBK" %>转码方法如下;  /**
       * 字符串内码转换 iso8859-1 to GB2312
       * @param ori 源字符串
       * @return 转换后的字符串
       */
      public static String isotogb(String ori) {
        String newstr = "";
        try {
          if (ori == null) {
            ori = "";
          }
          byte[] byte1 = null;
          byte1 = ori.getBytes("ISO-8859-1");
          newstr = new String(byte1, "EUC_CN");
          return newstr;
        }
        catch (Exception e) {
          e.printStackTrace();
          return newstr;
        }
      }  /**
       * 字符串内码转换 GB2312 to iso8859-1
       * @param ori 源字符串
       * @return 转换后的字符串
       */
      public static String gbtoiso(String ori) {
        String newstr = "";
        try {
          if (ori == null) {
            ori = "";
          }
          byte[] byte1 = null;
          byte1 = ori.getBytes("EUC_CN");
          newstr = new String(byte1, "ISO-8859-1");
          return newstr;
        }
        catch (Exception e) {
          e.printStackTrace();
          return newstr;
        }
      }
      

  3.   

    问题我自己解决了,
    解决方法如下:
    该方法已知适用的版本tomact5.0.18,tomcat5.0.9。
    已知不适用的版本为tomcat5.0.28。
    问题描述:
    在inputtext中输入中文,然后在输出,显示为乱码。
    解决方法:
    1、自定义转器
    package util;
    import java.util.Map;
    import javax.faces.component.UIComponent;
    import javax.faces.convert.Converter;
    import javax.faces.context.FacesContext;
    import javax.faces.convert.ConverterException;public class StringConverter implements Converter {
    public Object getAsObject(FacesContext context, UIComponent component,
    String newValues) throws ConverterException {
    String newstr = "";
    if (newValues == null) {
    newValues = "";
    }
    byte[] byte1 = null;
    try {
    byte1 = newValues.getBytes("ISO-8859-1");
    newstr = new String(byte1, "GB2312");
    UIInput input=(UIInput)component;//
    input.setSubmittedValue(newstr);
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    } return newstr; } public String getAsString(FacesContext context, UIComponent component,
    Object Values) throws ConverterException {
    return (String) Values;
    }
    }2、注册转换器
    faces-config.xml片段
    <converter>
      <converter-id>util.stringconverter</converter-id>
      <converter-class>util.StringConverter</converter-class>
    </converter>3、在页面使用转换器
    <h:inputText id="account" value="#{user.account}" required="true" styleClass="input"> <f:converter converterId="util.stringconverter"/>
    </h:inputText>
      

  4.   

    页面用“UTF-8”
    然后使用filters
      

  5.   

    //====================================字符串处理函数==========================
      /**
       * 功能或作用:转换字符串的字符集为中文
       * @param  InputStr:输入字符串
       * @return 中文字符集的字符串
       */
      public String toChinese(String InputStr)
      {
        if(InputStr==null)
          return null;
        try
        {
          String convert=new String(InputStr.getBytes("ISO8859-1"),"gb2312");
          return convert;
        }
        catch(Exception e){}
        return null;
      }
      

  6.   

    设置Application server的 vm参数。