关闭

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

339人阅读 评论(0) 收藏 举报

 

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

 

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

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,'']]";
	@Test
	public 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);
    }
   
}

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:322258次
    • 积分:8881
    • 等级:
    • 排名:第2253名
    • 原创:1096篇
    • 转载:14篇
    • 译文:0篇
    • 评论:5条
    最新评论