在实际的应用中,我们经常需要对字符串进行编解码,Apache Commons家族中的Commons Codec就提供了一些公共的编解码实现,比如Base64, Hex, MD5,Phonetic and URLs等等。

一、官方网址

http://commons.apache.org/codec/

二、例子

1、  Base64编解码

private static String  encodeTest(String str){
Base64 base64 = new Base64();
try {
str = base64.encodeToString(str.getBytes(“UTF-8″));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println(“Base64 编码后:”+str);
return str;
}
 
private static void decodeTest(String str){
Base64 base64 = new Base64();
//str = Arrays.toString(Base64.decodeBase64(str));
str = new String(Base64.decodeBase64(str));
System.out.println(“Base64 解码后:”+str);
}

2、 Hex编解码

private static String  encodeHexTest(String str){
try {
str = Hex.encodeHexString(str.getBytes(“UTF-8″));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println(“Hex 编码后:”+str);
return str;
}
 
private static String  decodeHexTest(String str){
Hex hex = new Hex();
try {
str = new String((byte[])hex.decode(str));
} catch (DecoderException e) {
e.printStackTrace();
}
System.out.println(“Hex 编码后:”+str);
return str;
}

3、 MD5加密

private static String  MD5Test(String str){
try {
System.out.println(“MD5 编码后:”+new String(DigestUtils.md5Hex(str.getBytes(“UTF-8″))));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}

4、  SHA编码

private static String  ShaTest(String str){
try {
System.out.println(“SHA 编码后:”+new String(DigestUtils.shaHex(str.getBytes(“UTF-8″))));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}

5、 Metaphone和Soundex

这个例子来源于网上,网址见:

http://350129923.blog.163.com/blog/static/17959113200763144659125/

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

import org.apache.commons.codec.language.*;
 import org.apache.commons.codec.*;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”);}
 }
 }