中文字符的编解码实现:URLEncoder.encode()和URLDecoder.decode() 以及MD5加密

encode:

Uri.EscapeDataString("content").Replace("%20", "+")//用+号代替空格
 

decode:

Uri.UnescapeDataString("content").Replace("+", " ")//用空格替换+号

 

一,为什么要用URLEncoder编码算法?

URLEncoder编码算法是将非ASCII码内容转换成可以传输的字符,客户端在进行网页请求的时候,网址中可能会包含非ASCII码形式的内容,如servlet的cookie不接受非字符串格式。

二、编码原理

1、将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头

eg:  0x9c  URLEncoder --> %9c

2、内容中的空格‘ ’ ,全部用+代替

3、注:与Hex不同,Hex是将所有的字符转换为16进制表示,而URLEncoder是将ASCII码集之外的转换为%加上相应的16进制,而ASCII码集内的字符不进行处理
 

三、下面是自己代码实现的,根据上面的原理,下面方法有缺陷,但是根本已经有了
 

C#版

public String UrlEncode(String content)

        {

            StringBuilder sBuilder = new StringBuilder();

            byte[] byStr = System.Text.Encoding.UTF8.GetBytes(content);

            for (int i = 0; i < byStr.Length; i++)

            {

                sBuilder.Append(@"%" + Convert.ToString(byStr[i], 16));

            }

            return sBuilder.ToString();


        }

 

Md5:

 

官网生成MD5的链接:https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.hashalgorithm.computehash?view=net-5.0#System_Security_Cryptography_HashAlgorithm_ComputeHash_System_Byte___

string password = "HelloWorld";//需要转换字符串
byte[] ruselt = Encoding.Default.GetBytes(password);//转为字符数组
MD5 md5 = new MD5CryptoServiceProvider();//使用MD5
byte[] output = md5.ComputeHash(ruselt);//加密
password = BitConverter.ToString(output).Replace("-", "");//转换为字符串


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TO_ZRG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值