js代码还原,中文字符转unicode
像
eval(function(E,I,A,D,J,K,L,H){function.....
的js
还原的方法就很简单了,那前面的 eval( 和后面的 ) 去掉:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>代码还原</title> </head> <body> <TEXTAREA NAME="tx1" ROWS="10" COLS="100"></TEXTAREA> <SCRIPT type="text/javascript"> document.all.tx1.value =function(E,I,A,D,J,K,L,H){ .... </SCRIPT> </body> </html> <script language="javascript"> var o = "\x3c\x64\151\x76\x20\x63\154\141\x73\151\166\x3e"; alert(o.toString()) </script>
正则表达式 http://www.w3cfuns.com/portal.php?mod=topic&topicid=46
/** * 中文转unicode字符工具 */ function toUnicode(str, cssType) { var i = 0, l = str.length, result = [], //转换后的结果数组 unicodePrefix, //unicode前缀 (example:\1234||\u1234) unicode16; //转换成16进制后的unicode //如果是css中使用格式为\1234之类 unicodePrefix = (cssType && cssType.toLowerCase() === 'css') ? '\\' : '\\u'; for (; i < l; i++) { //转为16进制的unicode, js及css里须转成16进制 unicode16 = str.charCodeAt(i).toString(16); result.push( unicodePrefix + unicode16 ); } return result.join(' '); } 字符串的charCodeAt方法返回的是10进制的unicode,所以我们需要用toString(16)将其转为16进制的,才能在JS及CSS中使用,而CSS中跟JS不同的是少了个U //检测英文等字符排除 function checkInput(str) { var charReg = /[^u0391-uFFE5]/g; //匹配英文等无需转换的字符 if (charReg.test(str)) { msg.innerHTML = '输入字符格式有误,请输入中文等字符'; 正则/[\u0391-\uFFE5]/是用来匹配中文字符,包括标点,繁体什么的。
中国:\u4e2d\u56fd css:\4e2d\56fd
/// <summary> /// 字符编解码助手: /// ← /// → /// \u840c\u59b9\u7ffb\u7a97\u8868\u767d\u57fa\u60c5\u5916\u6cc4 /// </summary> public class AsciiHelper { /// <summary> /// 编码 /// </summary> /// <param name="value"></param> /// <returns></returns> public static string EncodeNonAsciiCharacters(string value) { StringBuilder sb = new StringBuilder(); foreach (char c in value) { if (c > 127) { // This character is too big for ASCII string encodedValue = "\\u" + ((int)c).ToString("x4"); sb.Append(encodedValue); } else { sb.Append(c); } } return sb.ToString(); } /// <summary> /// 解码 /// </summary> /// <param name="value"></param> /// <returns></returns> public static string DecodeEncodedNonAsciiCharacters(string value) { return Regex.Replace( value, @"\\u(?<Value>[a-zA-Z0-9]{4})", m => { return ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString(); }); } }