var str = "\\u6211\\u662Funicode\\u7F16\\u7801";
關於這樣的數據轉換為中文問題,常用的以下方法。
1. eval解析或new Function("'+ str +'")()
str = eval("'" + str + "'"); // "我是unicode編碼"
2. unescape 解析
str = unescape(str.replace(/\u/g, "%u")); // "我是unicode編碼"
C#中文和UNICODE字符轉換方法
解碼
public string uncode(string str) { string outStr = ""; Regex reg = new Regex(@"(?i)//u([0-9a-f]{4})"); outStr = reg.Replace(str, delegate(Match m1) { return ((char)Convert.ToInt32(m1.Groups[1].Value, 16)).ToString(); }); return outStr; }
C# /// <summary> /// 將漢字轉換為Unicode /// </summary> /// <param name="text">要轉換的字符串</param> /// <returns></returns> public static string GBToUnicode(string text) { byte[] bytes = System.Text.Encoding.Unicode.GetBytes(text); string lowCode = "", temp = ""; for (int i = 0; i < bytes.Length; i++) { if (i % 2 == 0) { temp = System.Convert.ToString(bytes[i], 16);//取出元素4編碼內容(兩位16進制) if (temp.Length < 2) temp = "0" + temp; } else { string mytemp = Convert.ToString(bytes[i], 16); if (mytemp.Length < 2) mytemp = "0" + mytemp; lowCode = lowCode + @"\u" + mytemp + temp;//取出元素4編碼內容(兩位16進制) } } return lowCode; } /// <summary> /// 將Unicode轉換為漢字 /// </summary> /// <param name="name">要轉換的字符串</param> /// <returns></returns> public string UnicodeToGB(string text) { MatchCollection mc = Regex.Matches(text, "([\\w]+)|(\\\\u([\\w]{4}))"); if (mc != null && mc.Count > 0) { StringBuilder sb = new StringBuilder(); foreach (Match m2 in mc) { string v = m2.Value; string word = v.Substring(2); byte[] codes = new byte[2]; int code = Convert.ToInt32(word.Substring(0, 2), 16); int code2 = Convert.ToInt32(word.Substring(2), 16); codes[0] = (byte)code2; codes[1] = (byte)code; sb.Append(Encoding.Unicode.GetString(codes)); } return sb.ToString(); } else { return text; } } js <script Language=Javascript> var classObj= { ToUnicode:function(str) { return escape(str).replace(/%/g,"\\").toLowerCase(); }, UnUnicode:function(str) { return unescape(str.replace(/\\/g, "%")); }, copyingTxt:function(str) { document.getElementById(str).select(); document.execCommand("Copy"); } } </script> <textarea id=codes style="width:500px;height:300px"></textarea><br><br> <input type=button value=Unicode加密 onclick=javascript:codes.value=classObj.ToUnicode(codes.value)> <input type=button value=Unicode解密 onclick=javascript:codes.value=classObj.UnUnicode(codes.value)> <input type=button value=復制上面文本 onclick=javascript:classObj.copyingTxt("codes")> <input type=button value=清空上面內容 onclick=javascript:codes.value=""> Java: public static void main(String[] args) { String str = "\u4e2d\u534e\u4eba\u6c11\u5171\u548c\u56fd"; //char[] charArray = str.toCharArray(); //str = new String(charArray); System.out.println(str); System.out.print(str.equals("中華人民共和國")); }
Unicode小百科:
在計算機科學領域中,Unicode(統一碼、萬國碼、單一碼、標准萬國碼)是業界的一種標准,它可以使電腦得以呈現世界上數十種文字的系統。Unicode是基於通用字符集(Universal Character Set)的標准來發展,並且同時也以書本的形式(The Unicode Standard,目前第五版由Addison-Wesley Professional出版,ISBN-10: 0321480910)對外發表。Unicode包含了超過十萬個字符(在2005年,Unicode的第十萬個字符被采納且認可成為標准之一)、一組可用以作為視覺參考的代碼圖表、一套編碼方法與一組標准字符編碼、一套包含了上標字、下標字等字符特性的列舉等。
Unicode組織(The Unicode Consortium)是由一個非營利性的機構所運作,並主導Unicode的后續發展,其目標在於:將既有的字符編碼方案,以Unicode編碼方案來加以取代,特別是既有的方案在多語環境下,皆僅有有限的空間以及不相容的問題。
Unicode在字符集認可的成功,使其得以在電腦軟件的國際化與本地化領域中,廣泛且具優勢的被采用。這標准已在近年來的多種新科技當中被加以采用,包含了可擴展置標語言(XML)、Java編程語言、以及最新的操作系統中。
unicode編碼的編碼規則
比如要把“楊”編碼,我們可以新建一個記事本,輸入“楊”保存時選擇存為unicode編碼,然后查看文件二進制內容,前面的FF FE兩個字節是unicode編碼文件頭標志,接着的68 67兩個字節就是“楊”的unicode編碼,用計算器換算為十進制就是26472,現在可以在一個html文件里面寫入“楊”,IE打開就顯示一個“楊”字。