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 的软件开发.
别小看任何人,越不起眼的人。往往会做些让人想不到的事。