小议关于java字符编码的问题

来源:互联网 发布:威纶触摸屏编程实例 编辑:程序博客网 时间:2024/05/22 09:47

 

对于初学者而言,字符编码是一个很“模糊”的概念,自己代码写得好好的,却显示在前端的时候出现了不知名的字符串,很是郁闷,这里我简单介绍一下自己的经验,如果我有什么不正确的地方,希望大家指出,相互学习

 

我以网页操作流程为例子说明

1.         首先,我们进入JSP页面,它已经指明了页面是以什么样的方式编码,例如GBKISO-8859-1UTF-8等,将数据传送给server

2.         其次,server端接受的数据也应该与前端对应起来,必须保持一致

3.         最后,将数据插入到数据库中,这里也需要数据库编码和字server端编码是一致的

总结:从前端----server----数据库 这三者之间的编码必须保持一致,才能让不会出现乱码的现象

 

String bRet=new String(str.getBytes("gbk"),"utf-8");

备注:原来的字符串是gbk编码,但是出现乱码的问题,将其转为utf-8编码

 

 

package hb.code_change;import java.io.UnsupportedEncodingException;import org.junit.Test;public class CodeChange {public static String str = "[['20120522222139251',       '绋芥牳绯荤粺鐨勬ā鍧楄〃缁撴瀯.txt','.txt',900,100,-4,'']]";@Testpublic void test(){/*byte[] byteTemp = str.getBytes("ISO-8859-1");        try {String sRet = new String(byteTemp,"utf-8");System.out.println(sRet);} catch (UnsupportedEncodingException e) {e.printStackTrace();}*/try {String bRet=new String(str.getBytes("gbk"),"utf-8");System.out.println(bRet);} catch (UnsupportedEncodingException e) {e.printStackTrace();}}/**************************************************************     * <p>功能:将UniCode码转换为Ascii码</p>     * <p>作者: </p>     * <p>最后更新:</p>     *     * @param sUniCode -输入的UniCode码字符串     * @return Ascii码字符串     *************************************************************/    public static String Un2Ascii(String sUniCode)    {        if(sUniCode == null)            return "";        String sRet = null;        try        {            byte[] byteTemp = sUniCode.getBytes();            sRet = new String(byteTemp,"ISO-8859-1");            return sRet;        }        catch(Exception ue)        {            System.out.println("Uni2Ascii:" + ue.getMessage());            return sRet;        }    }        @Test    public void testUn2Ascii(){    String result = Un2Ascii("%257B%2522pkId%2522%253A%2522");    System.out.println(result);    }        /****************************************************************     * <p>功能:将sAscII码转换为UniCode码     * <p>作者: </p>     * <p>最后更新:</p>     * @param sAscII -AscII码字符串     * @return UniCode码字符串     ***************************************************************/    public String Ascii2Un(String sAscII)    {        if(sAscII==null)return "";        String sRet = null;        try        {            byte[] byteTemp = sAscII.getBytes("ISO-8859-1");            sRet = new String(byteTemp);            return sRet;        }        catch(Exception ue)        {            System.out.println("Ascii2Un:" + ue);            return sRet;        }    }        @Test    public void testAscii2Un(){    String result = Un2Ascii("%257B%2522pkId%2522%253A%2522");    System.out.println(result);    }   }

 

原创粉丝点击