现在的位置: 首页 > 综合 > 正文

Jakarta-Common-Codec使用笔记

2013年09月06日 ⁄ 综合 ⁄ 共 2625字 ⁄ 字号 评论关闭

commons codec 提供 base64, hex, 及 metaphone, soundex 等编码演算。

下载地址:http://commons.apache.org/codec/

A.Base64 编解码

package demo;

import org.apache.commons.codec.binary.Base64;

public class Base64Test {

    
public static void main(String[] args) {

        Base64 base64 
= new Base64();
        String str 
= "中文";
        
byte[] enbytes = null;
        String encodeStr 
= null;
        
byte[] debytes = null;
        String decodeStr 
= null;

        enbytes 
= base64.encode(str.getBytes());
        encodeStr 
= new String(enbytes);
        debytes 
= base64.decode(enbytes);
        decodeStr 
= new String(debytes);
    
        System.out.println(
"编码前:" + str);
        System.out.println(
"编码后:" + encodeStr);
        System.out.println(
"解码后:" + decodeStr);
    }

}

 

B.Hex 编解码

package demo;

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.binary.Hex;

public class HexTest {

    
public static void main(String[] args) throws DecoderException {

        Hex hex 
= new Hex();
        String str 
= "中文";
        
char[] enbytes = null;
        String encodeStr 
= null;
        
byte[] debytes = null;
        String decodeStr 
= null;

        enbytes 
= hex.encodeHex(str.getBytes());
        encodeStr 
= new String(enbytes);
        debytes 
= hex.decodeHex(enbytes);
        decodeStr 
= new String(debytes);

        System.out.println(
"编码前:" + str);
        System.out.println(
"编码后:" + encodeStr);
        System.out.println(
"解码后:" + decodeStr);
    }

}

C.Metaphone 及 Soundex 编码

package demo;

import org.apache.commons.codec.language.Metaphone;
import org.apache.commons.codec.language.RefinedSoundex;
import org.apache.commons.codec.language.Soundex;

public class LanguageTest {

    
public static void main(String[] args) {

        Metaphone metaphone 
= new Metaphone();
        RefinedSoundex refinedSoundex 
= new RefinedSoundex();
        Soundex soundex 
= new Soundex();
        
for (int i = 0; i < 2; i++{
            String str 
= (i == 0? "resume" : "resin";
            String mString 
= null;
            String rString 
= null;
            String sString 
= null;
            
try {
                mString 
= metaphone.encode(str);
                rString 
= refinedSoundex.encode(str);
                sString 
= soundex.encode(str);
            }
 catch (Exception ex) {
                ;
            }

            System.out.println(
"Original:" + str);
            System.out.println(
"Metaphone:" + mString);
            System.out.println(
"RefinedSoundex:" + rString);
            System.out.println(
"Soundex:" + sString + "/n");
        }

    }

}

Metaphone 建立出相同的key给发音相似的单字, 比 Soundex 还要准确, 但是 Metaphone 没有固定长度, Soundex 则是固定第一个英文字加上3个数字. 这通常是用在类似音比对, 也可以用在 MP3 的软件开发.

抱歉!评论已关闭.