最近專案處理需要用到將字串轉為對應 Unicode 的 Hex String. 下面的代碼可以提供參考.
Sample Code:
- package test;
- import flib.util.HexByteKit;
- public class CharacterSetToolkit {
- public static String StrToUnicode2(String str) throws Exception
- {
- StringBuffer outHexStrBuf = new StringBuffer();
- for(char c:str.toCharArray())
- {
- outHexStrBuf.append("\\u");
- String hexStr = Integer.toHexString(c);
- for(int i=0; i<(4-hexStr.length()); i++) outHexStrBuf.append("0");
- outHexStrBuf.append(hexStr);
- }
- return outHexStrBuf.toString();
- }
- public static String StrToUnicode1(String str) throws Exception
- {
- StringBuffer outHexStrBuf = new StringBuffer();
- for(int i=0; i
- {
- String c = str.substring(i, i+1);
- byte bytes[] = c.getBytes("Unicode");
- outHexStrBuf.append(String.format("\\u%s", HexByteKit.Byte2Hex(bytes).substring(4, 8))); // Trim BOM:0xFEFF
- }
- return outHexStrBuf.toString();
- }
- public static String UnicodeToStr(String unicodeStr) throws Exception
- {
- StringBuffer outStrBuf = new StringBuffer();
- String uCodes[] = unicodeStr.trim().split("\\\\u");
- for(String uc:uCodes)
- {
- if(uc.trim().isEmpty()) continue;
- byte bs[] = HexByteKit.Hex2Byte(uc.trim());
- if(bs!=null)
- {
- String str = new String(bs, "Unicode");
- outStrBuf.append(str);
- }
- else System.err.printf("Illegal uc=%s\n", uc);
- }
- return outStrBuf.toString();
- }
- public static void main(String args[]) throws Exception
- {
- String str = "abc繁體简体中文ABC!@#$";
- String u1 = StrToUnicode1(str);
- String u2 = StrToUnicode2(str);
- System.out.printf("Before Str='%s'\n", str);
- System.out.printf("U1=%s\nU2=%s\n", u1, u2);
- System.out.printf("After Str='%s'\n", UnicodeToStr(u1));
- }
- }
另外在代碼中有使用到類別 HexByteKit 進行 hex string 到 byte array 與 byte array 到 hex string 的轉換, 該類別屬於一個我成立在 code.google.com 的專案 flib.
Supplement:
* 線上Unicode 編碼轉換工具
* Baidu 文庫: java中文转换Unicode编码
* digdata.me: Java中文与unicode互转
不管又沒有成功~~~謝板大~~
回覆刪除Try ZHConverter, 目前我都是使用這個工具做 簡繁 轉換:
刪除http://www.lai18.com/content/8790068.html
原來還可以做繁簡轉換阿~~
刪除