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 的软件开发.
更多关于Commons codec的详细信息,或者下载地址请点这里