public class TranCharset {
??? private static final String PRE_FIX_UTF = "&#x";
??? private static final String POS_FIX_UTF = ";";
??? public TranCharset() {
??? }
??? /**
???? * Translate charset encoding to unicode
???? *
???? * @param sTemp charset encoding is gb2312
???? * @return charset encoding is unicode
???? */
??? public static String XmlFormalize(String sTemp) {
??????? StringBuffer sb = new StringBuffer();
??????? if (sTemp == null || sTemp.equals("")) {
??????????? return "";
??????? }
??????? String s = TranCharset.TranEncodeTOGB(sTemp);
??????? for (int i = 0; i < s.length(); i++) {
??????????? char cChar = s.charAt(i);
??????????? if (TranCharset.isGB2312(cChar)) {
??????????????? sb.append(PRE_FIX_UTF);
??????????????? sb.append(Integer.toHexString(cChar));
??????????????? sb.append(POS_FIX_UTF);
??????????? } else {
??????????????? switch ((int) cChar) {
??????????????????? case 32:
??????????????????????? sb.append(" ");
??????????????????????? break;
??????????????????? case 34:
??????????????????????? sb.append(""");
??????????????????????? break;
??????????????????? case 38:
??????????????????????? sb.append("&");
??????????????????????? break;
??????????????????? case 60:
??????????????????????? sb.append("<");
??????????????????????? break;
??????????????????? case 62:
??????????????????????? sb.append(">");
??????????????????????? break;
??????????????????? default:
??????????????????????? sb.append(cChar);
??????????????? }
??????????? }
??????? }
??????? return sb.toString();
??? }
??? /**
???? * 將字符串編碼格式轉成GB2312
???? *
???? * @param str
???? * @return
???? */
??? public static String TranEncodeTOGB(String str) {
??????? try {
??????????? String strEncode = TranCharset.getEncoding(str);
??????????? String temp = new String(str.getBytes(strEncode), "GB2312");
??????????? return temp;
??????? } catch (java.io.IOException ex) {
??????????? return null;
??????? }
??? }
??? /**
???? * 判斷輸入字符是否為gb2312的編碼格式
???? *
???? * @param c 輸入字符
???? * @return 如果是gb2312返回真,否則返回假
???? */
??? public static boolean isGB2312(char c) {
??????? Character ch = new Character(c);
??????? String sCh = ch.toString();
??????? try {
??????????? byte[] bb = sCh.getBytes("gb2312");
??????????? if (bb.length > 1) {
??????????????? return true;
??????????? }
??????? } catch (java.io.UnsupportedEncodingException ex) {
??????????? return false;
??????? }
??????? return false;
??? }
??? /**
???? * 判斷字符串的編碼
???? *
???? * @param str
???? * @return
???? */
??? public static String getEncoding(String str) {
??????? String encode = "GB2312";
??????? try {
??????????? if (str.equals(new String(str.getBytes(encode), encode))) {
??????????????? String s = encode;
??????????????? return s;
??????????? }
??????? } catch (Exception exception) {
??????? }
??????? encode = "ISO-8859-1";
??????? try {
??????????? if (str.equals(new String(str.getBytes(encode), encode))) {
??????????????? String s1 = encode;
??????????????? return s1;
??????????? }
??????? } catch (Exception exception1) {
??????? }
??????? encode = "UTF-8";
??????? try {
??????????? if (str.equals(new String(str.getBytes(encode), encode))) {
??????????????? String s2 = encode;
??????????????? return s2;
??????????? }
??????? } catch (Exception exception2) {
??????? }
??????? encode = "GBK";
??????? try {
??????????? if (str.equals(new String(str.getBytes(encode), encode))) {
??????????????? String s3 = encode;
??????????????? return s3;
??????????? }
??????? } catch (Exception exception3) {
??????? }
??????? encode = "BIG5";
??????? try {
??????????? if (str.equals(new String(str.getBytes(encode), encode))) {
??????????????? String s4 = encode;
??????????????? return s4;
??????????? }
??????? } catch (Exception exception3) {
??????? }
??????? return "";
??? }
??? public static void main(String args[]) {
??????? System.out.println(XmlFormalize("下載"));
??? }
}
posted on 2006-03-23 09:16
xnabx 閱讀(150)
評論(0) 編輯 收藏