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 的軟件開發.
