java编码解码大全

 

java中字符串的编码解码问题

1.将字符串转换成byte数组再恢复:

byte[] getBytes(String charsetName)
String(byte[] bytes, String charsetName)

或getBytes()
String(byte[] bytes)

2.使用String sun.misc.BASE64Encode.encode(byte[] b)

byte[] String sun.misc.BASE64Decode.decodeBuffer(String str)
将字符串转换成byte[],再转换成ASCII码;恢复时做逆操作。

在字符串转换成byte[]时,尽量用byte[] getBytes(String charsetName)方法,解码时也用相同的charsetName做参数,如果都不charsetName可能会导致一些中文字符不能正确解码。

应用例子如下:

package test;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class Tools
{
     /**
      *
      * <p>Discription:Base64解码方法</p>
      * @param data 要进行解码的数据
      * @param encode 编码方式
      * @return
      * @throws IDCException
      * @author:许兆光
      * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
      */
     public static String decodeBase64(String data, String encode)
     {
         BASE64Decoder d = new BASE64Decoder();
             try
             {
                 return new String(d.decodeBuffer(data), encode);
             }
             catch (UnsupportedEncodingException e)
             {
                 e.printStackTrace();
             }
             catch (IOException e)
             {
                 e.printStackTrace();
             }
         return encode;
     }
     /**
     *
     * <p>Discription:Base64编码方法</p>
     * @param data 要进行编码的数据
     * @param encode 编码方式
     * @return
     * @throws IDCException
     * @author:
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
     */
    public static String encodeBase64(String data, String encode)
    {
        BASE64Encoder be = new BASE64Encoder();
            try
         {
             return be.encode(data.getBytes(encode));
         }
         catch (UnsupportedEncodingException e)
         {
             e.printStackTrace();
         }
     return encode;
    }

    /**
     *
     * <p>Discription:Base64编码方法</p>
     * @param data 要进行编码的数据
     * @param encode 编码方式
     * @return
     * @throws IDCException
     * @author:
     * @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]
     */
    public static String encodeBase64WithReplace(String data, String encode)
    {
        BASE64Encoder be = new BASE64Encoder();
        String retrunStr = "";

         try
         {
             retrunStr = be.encode(data.getBytes(encode)).replaceAll("//+", "%2B")
                        .replaceAll("///", "%2F");
         }
         catch (UnsupportedEncodingException e)
         {
             e.printStackTrace();
         }
         return retrunStr;

    }
}

3.使用java.net.URLEncoder类和java.net.URLDecoder类

它有static方法将字符串转换成‘pplication/x-www-form-urlencoded'格式便于在网络中传播
形如:‘%20%35'。

应用例子如下

package com.ccu.bbs.tools;

import java.io.UnsupportedEncodingException;

public class Tools
{
     public static String procChaosCodeURL(String chi)
     {
         try
         {
             chi = java.net.URLEncoder.encode(chi, "ISO-8859-1");//在发送给加码用的
             chi = java.net.URLDecoder.decode(chi, "GBK");//接收到解码用的
         }
         catch (UnsupportedEncodingException e)
         {
             System.out.println(e.toString());
         }
         return chi;
     }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值