`

C#写一个js的escape函数

阅读更多

由于某种需要,要在server端对字符串(主要是汉字)进行编码,在页面<nobr style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">解码</nobr>.
C#里有urlencode,但js没有urldecode,所以想用js的escape编码,但是C#里没有escape函数(我没找到),这样就需要自己写一个escape编码函数.
这是其他网友写的编码规则:
<nobr style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">简单</nobr>的说,就是把空格、标点、带音调标记的字符以及非 ASCII 字符都进行编码,编码规则是用 % 加上字符 ASCII 码的 2 位十六进制形式。
其实就是%uXXXX,其中XXXX就是汉字的十六进制数.
我对编码不太懂,请问这个C#<nobr style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline" target="_blank">函数</nobr>该如何写?只要写出关键语句就可以.
注意:要是C#的escape编码,而不是解码!!!

HttpUtility.UrlEncodeUnicode(string)
就可以了

另外对于在写cookie时比如:abcd@126.com,我们在写入的时候即使不做任何处理,会自动编码成abcd%40126.com,然后我们在服务器端,比如c#里读取需要转换HttpUtility.UrlDecode(cookieUEmail.Value.Trim()).ToString()

但是对于在写cookie时用了escape(js,php,asp都有这个函数,但是c#没有),在cookie里格式为%25u4E03%25u90CE2007,这时我们需要反解码两遍,HttpUtility.UrlDecode(HttpUtility.UrlDecode(cookieUEmail.Value.Trim()).ToString()).ToString()

第一遍得到的结果是 %u4E03%25u90CE2007其实这是标准的十六进制

第二遍得到的结果是 七郎2007

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics