package com.chinabase.common.util; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 * @author yuanji * @created on:Sep 19, 2008 */ public class ChangeCharset { /** *//** 将字符编码转换成US-ASCII码 */ public String toASCII(String str) throws UnsupportedEncodingException { return this.changeCharset(str, CharContents.US_ASCII); } /** *//** 将字符编码转换成ISO-8859-1 */ public String toISO_8859_1(String str) throws UnsupportedEncodingException { return this.changeCharset(str, CharContents.ISO_8859_1); } /** *//** 将字符编码转换成UTF-8 */ public String toUTF_8(String str) throws UnsupportedEncodingException { return this.changeCharset(str, CharContents.UTF_8); } /** *//** 将字符编码转换成UTF-16BE */ public String toUTF_16BE(String str) throws UnsupportedEncodingException{ return this.changeCharset(str, CharContents.UTF_16BE); } /** *//** 将字符编码转换成UTF-16LE */ public String toUTF_16LE(String str) throws UnsupportedEncodingException { return this.changeCharset(str, CharContents.UTF_16LE); } /** *//** 将字符编码转换成UTF-16 */ public String toUTF_16(String str) throws UnsupportedEncodingException { return this.changeCharset(str, CharContents.UTF_16); } /** *//** 将字符编码转换成GBK */ public String toGBK(String str) throws UnsupportedEncodingException { return this.changeCharset(str, CharContents.GBK); } /** *//** 将字符编码转换成GB2312 */ public String toGB2312(String str) throws UnsupportedEncodingException { return this.changeCharset(str,CharContents.GB2312); } /** *//** * 字符串编码转换的实现方法 * @param str 待转换的字符串 * @param newCharset 目标编码 */ public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException { if(str != null) { //用默认字符编码解码字符串。与系统相关,中文windows默认为GB2312 byte[] bs = str.getBytes(); return new String(bs, newCharset); //用新的字符编码生成字符串 } return null; } /** *//** * 字符串编码转换的实现方法 * @param str 待转换的字符串 * @param oldCharset 源字符集 * @param newCharset 目标字符集 */ public String changeCharset(String str, String oldCharset, String newCharset) throws UnsupportedEncodingException { if(str != null) { //用源字符编码解码字符串 byte[] bs = str.getBytes(oldCharset); return new String(bs, newCharset); } return null; } public static void main(String[] args) throws UnsupportedEncodingException { ChangeCharset test = new ChangeCharset(); String str = "This is a 中文的 String!"; System.out.println("str:" + str); String gbk = test.toGBK(str); System.out.println("转换成GBK码:" + gbk); System.out.println(); String ascii = test.toASCII(str); System.out.println("转换成US-ASCII:" + ascii); System.out.println(); String iso88591 = test.toISO_8859_1(str); System.out.println("转换成ISO-8859-1码:" + iso88591); System.out.println(); gbk = test.changeCharset(iso88591, CharContents.ISO_8859_1, CharContents.GBK); System.out.println("再把ISO-8859-1码的字符串转换成GBK码:" + gbk); System.out.println(); String utf8 = test.toUTF_8(str); System.out.println(); System.out.println("转换成UTF-8码:" + utf8); String utf16be = test.toUTF_16BE(str); System.out.println("转换成UTF-16BE码:" + utf16be); gbk = test.changeCharset(utf16be, CharContents.UTF_16BE, CharContents.GBK); System.out.println("再把UTF-16BE编码的字符转换成GBK码:" + gbk); System.out.println(); String utf16le = test.toUTF_16LE(str); System.out.println("转换成UTF-16LE码:" + utf16le); gbk = test.changeCharset(utf16le, CharContents.UTF_16LE, CharContents.GBK); System.out.println("再把UTF-16LE编码的字符串转换成GBK码:" + gbk); System.out.println(); String utf16 = test.toUTF_16(str); System.out.println("转换成UTF-16码:" + utf16); String gb2312 = test.changeCharset(utf16, CharContents.UTF_16, CharContents.GB2312); System.out.println("再把UTF-16编码的字符串转换成GB2312码:" + gb2312); } }