zoukankan      html  css  js  c++  java
  • 转) javascript 中的escape 与C#互相转化

    修改:2008-10-20

    public static string Escape(string s)
            {
                StringBuilder sb = new StringBuilder();
                byte[] ba = System.Text.Encoding.Unicode.GetBytes(s);
                for (int i = 0; i < ba.Length; i += 2)
                {
                    if (ba[i + 1] == 0)
                    {
                        //数字,大小写字母,以及"+-*/._"不变
                        if (
                              (ba[i]>=48 && ba[i]<=57)
                            ||(ba[i]>=64 && ba[i]<=90)
                            ||(ba[i]>=97 && ba[i]<=122)
                            ||(ba[i]==42 || ba[i]==43 || ba[i]==45 || ba[i]==46 || ba[i]==47 || ba[i]==95)
                            )//保持不变
                        {
                            sb.Append(Encoding.Unicode.GetString(ba, i, 2));

                        }
                        else//%xx形式
                        {
                            sb.Append("%");
                            sb.Append(ba[i].ToString("X2"));
                        }
                    }
                    else
                    {
                        sb.Append("%u");
                        sb.Append(ba[i + 1].ToString("X2"));
                        sb.Append(ba[i].ToString("X2"));
                    }
                }
                return sb.ToString();

            }

    源文地址

    javascript : escape 编码与C# 的使用问题.

    onsubmit="form1.Text1.value = escape(form1.Text1.value);"

    .cs处理 

     string a = HttpUtility.UrlDecode(Text1.Value);
    Response.Write(a);
    //c#实现escape编码:(用在ajax中)然后在aspx用unescape解码,就不会出现乱码问题
     private string escape(string s)
        {
            StringBuilder sb 
    = new StringBuilder();
            
    byte[] ba = System.Text.Encoding.Unicode.GetBytes(s);
            
    for (int i = 0; i < ba.Length; i += 2)
            {   
                sb.Append(
    "%u");
                sb.Append(ba[i 
    + 1].ToString("X2"));

                sb.Append(ba[i].ToString(
    "X2"));
            }
            
    return sb.ToString();

        }  

     
    另外一些方法
    ----------------------------
    encodeURIComponent() / decodeURIComponent()
    encodeURI()/decodeURI()
    注意上面两对javascript函数使用的编码多是utf-8
    应次如果页面使用编码不是utf-8就需要做另外的处理
     
    asp.net 发数据给 javascript
     在页面使用gb2312时
    encodeString=HttpUtility.UrlEncode("中问是中问http://www.gyzs.net/", System.Text.Encoding.UTF8)
     接收
    <script>document.write(decodeURIComponent('<%=encodeString %>'));</script>
     
     
    javascritp 发数据给asp.net
    页面中有如下js脚本
    <script>document.write("<a href='?t=" +encodeURI('中问是中问http://www.gyzs.net') +"' >点我</a>");</script>
    如果web.config中配置使用gb2312那么就要做如下处理
     Response.Write(HttpUtility.UrlDecode( Server.UrlEncode( Request["t"]),System.Text.Encoding.UTF8));
    如果web.config中使用的utf-8那么直接使用Request["t"]就可以
     
     另外要注意表单提交使用post方法时,会对表单里的数据进行 url编码,注意不要重复
  • 相关阅读:
    继承
    包、logging模块、hashlib模块、openpyxl模块、深浅拷贝
    Java中的Lambda表达式
    Java中udp/tcp的发送和接收
    Java中的IO流总结
    Java中的多线程
    Java中使用try-catch-finally处理IO流中的异常
    Java中的杂流(闸总)
    Java中的Properties
    Java中IO流之字符流
  • 原文地址:https://www.cnblogs.com/wdfrog/p/1284801.html
Copyright © 2011-2022 走看看