Commons项目中用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64, 及 hex, metaphone, soundex 等编码演算。
JavaDoc:http://www.osctools.net/apidocs/apidoc?api=commons-codec
官网下载地址: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 的软件开发.