所有的轉(zhuǎn)義字符都是由 '\' 打頭的
第二個(gè)字符 0-9 :八進(jìn)制 u :是Unicode轉(zhuǎn)意,,長度固定為6位 Other:則為以下字母中的一個(gè) b,t,n,f,r,",\ 都不滿足,則產(chǎn)生一個(gè)編譯錯(cuò)誤,。 unicode編碼簡而言之就是將每一個(gè)字符用16位2進(jìn)制數(shù)標(biāo)識,。但是通常都用4位的16進(jìn)制數(shù)標(biāo)識。
例如: 1)中文字符串"你好"的unicode碼為:\u 2)英文字符串"ab"的unicode碼為:\u0061\u0062,; 其中\(zhòng)u是標(biāo)識unicode碼用的,,后面的4位16進(jìn)制數(shù)則是對應(yīng)字符的unicode碼。 unicode碼在J2EE項(xiàng)目中應(yīng)用廣泛,,java對unicode碼提供了很好的支持,。例如國際化,,則是unicode的經(jīng)典運(yùn)用。 那么unicode的編碼規(guī)則具體是什么,,如何用程序?qū)崿F(xiàn),? 1、unicode編碼規(guī)則 unicode碼對每一個(gè)字符用4位16進(jìn)制數(shù)表示,。具體規(guī)則是:將一個(gè)字符(char)的高8位與低8位分別取出,,轉(zhuǎn)化為16進(jìn)制數(shù), 如果轉(zhuǎn)化的16進(jìn)制數(shù)的長度不足2位,,則在其后補(bǔ)0,,然后將高、低8位轉(zhuǎn)成的16進(jìn)制字符串拼接起來并在前面補(bǔ)上"\u" 即可,。 2,、轉(zhuǎn)碼程序 1)字符串轉(zhuǎn)unicode /** * 將字符串轉(zhuǎn)成unicode * @param str 待轉(zhuǎn)字符串 * @return unicode字符串 */ public String convert(String str) { str = (str == null ? "" : str); String tmp; StringBuffer sb = new StringBuffer(1000); char c; int i, j; sb.setLength(0); for (i = 0; i < str.length(); i++) { c = str.charAt(i); sb.append("\\u"); j = (c >>>8); //取出高8位 tmp = Integer.toHexString(j); if (tmp.length() == 1) sb.append("0"); sb.append(tmp); j = (c & 0xFF); //取出低8位 tmp = Integer.toHexString(j); if (tmp.length() == 1) sb.append("0"); sb.append(tmp); } return (new String(sb)); } 2)unicode轉(zhuǎn)成字符串,與上述過程反向操作即可 /** * 將unicode 字符串 * @param str 待轉(zhuǎn)字符串 * @return 普通字符串 */ public String revert(String str) { str = (str == null ? "" : str); if (str.indexOf("\\u") == -1)//如果不是unicode碼則原樣返回 return str; StringBuffer sb = new StringBuffer(1000); for (int i = 0; i < str.length() - 6;) { String strTemp = str.substring(i, i + 6); String value = strTemp.substring(2); int c = 0; for (int j = 0; j < value.length(); j++) { char tempChar = value.charAt(j); int t = 0; switch (tempChar) { case 'a': t = 10; break; case 'b': t = 11; break; case 'c': t = 12; break; case 'd': t = 13; break; case 'e': t = 14; break; case 'f': t = 15; break; default: t = tempChar - 48; break; } c += t * ((int) Math.pow(16, (value.length() - j - 1))); } sb.append((char) c); i = i + 6; } return sb.toString(); } |
|