Asp.Net 编码和解码

ASP编码和解码函数详解 用ASP开发的时候遇到一个解码问题。虽然在ASP中使用Request获取编码过URL字符串会自动解码,但是Request.BinaryRead(Request.TotalBytes)取得Post数据时却不会解码,所以只能手动进行解码。 ASP解码函数: Function URLDecode(enStr) dim deStr,strSpecial dim c,i,v deStr= strSpecial=!#$%&'()*+,.-_/:;<=>?@[/]^`{|}~% for i=1 to len(enStr) c=Mid(enStr,i,1) if c 立即下载

转自:http://www.cnblogs.com/xbf321/archive/2008/04/16/asp_net_char_convert_to_unicode.html

最近因为项目需要,做了一个投票的页面(Html,比如A 页面),要把它Post到一个Aspx页面(比如B页面),在这个Aspx页面上,需要确认一下,在提交到数据库,可是问题出来了,用户在A页面上点击Submit,Post到B页面上的时候,在B页面用Request.Form[“ID”],接收,但是显示时,有时候是乱码,有的时候却是正常的,不知道为什么,在网上查了一些资料,看了一些编码的文章,感觉出现问题的原因是这样的,A页面虽然在开始有一句<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />,但是用户用的机器上的编码可能是UTF或者GB的,在用户Post的时候,是用用户自己上的编码格式编的码(我的理解),从而在Request的时候就已经成乱码了。一开始,我想两种办法,一种是用Url编码,比如我们在A页面上有一个Input : <input type="radio" id="IsRightSee_2" name="radiobuttonIsRightSee" value="音、视频播放不连续" />音、视频播放不连续,我们把它的Value用Url编码,变成<input type="radio" id="IsRightSee_2" name="radiobuttonIsRightSee" value="%e%d..之类的" />音、视频播放不连续,在B页面用Request[“radiobuttonIsRightSee”],得到Value,然后再对这个Value解码,可是出乎我的意料的是,用这个办法得到的也是乱码。碰壁后只有用第二种方案,就是用Unicode对其编码,因为原先我没有遇到编码解码问题,所以就在网上搜索资源,但是与其相关的都没有一个好的解决方案,只搜到一个汉字转Unicode的工具,把其下载下来,先做了一个测试,对上文中的” 音、视频播放不连续”,进行编码,得到“\u97F3\u3001\u89C6\u9891\u64AD\u653E\u4E0D\u8FDE\u7EED”,然后再B页面上在对这个Value解码,果然,没有成乱码,看到这得你会不会想到,我怎么对这一串进行解码的,这个工具又没有源代码,其实这个工具是用.Net写的,.Net写的我们就有办法看里边的源代码了,只要他没有对源代码加密,用Reflector就行。解码的源代码如下:

private   string  NormalU2C( string  input)
    
{
        
string str = "";
        
char[] chArray = input.ToCharArray();
        Encoding bigEndianUnicode 
= Encoding.BigEndianUnicode;
        
for (int i = 0; i < chArray.Length; i++)
        
{
            
char ch = chArray[i];
            
if (ch.Equals('\\'))
            
{
                i
++;
                i
++;
                
char[] chArray2 = new char[4];
                
int index = 0;
                index 
= 0;
                
while ((index < 4) && (i < chArray.Length))
                
{
                    chArray2[index] 
= chArray[i];
                    index
++;
                    i
++;
                }

                
if (index == 4)
                
{
                    
try
                    
{
                        str 
= str + this.UnicodeCode2Str(chArray2);
                    }

                    
catch (Exception)
                    
{
                        str 
= str + @"\u";
                        
for (int j = 0; j < index; j++)
                        
{
                            str 
= str + chArray2[j];
                        }

                    }

                    i
--;
                }

                
else
                
{
                    str 
= str + @"\u";
                    
for (int k = 0; k < index; k++)
                    
{
                        str 
= str + chArray2[k];
                    }

                }

            }

            
else
            
{
                str 
= str + ch.ToString();
            }

        }

        
return str;
    }

    
private   string  UnicodeCode2Str( char [] u4)
    
{
        
if (u4.Length < 4)
        
{
            
throw new Exception("It's not a unicode code array");
        }

        
string str = "0123456789ABCDEF";
        
char ch = char.ToUpper(u4[0]);
        
char ch2 = char.ToUpper(u4[1]);
        
char ch3 = char.ToUpper(u4[2]);
        
char ch4 = char.ToUpper(u4[3]);
        
int index = str.IndexOf(ch);
        
int num2 = str.IndexOf(ch2);
        
int num3 = str.IndexOf(ch3);
        
int num4 = str.IndexOf(ch4);
        
if (((index == -1) || (num2 == -1)) || ((num3 == -1) || (num4 == -1)))
        
{
            
throw new Exception("It's not a unicode code array");
        }

        
byte num5 = (byte)(((index * 0x10) + num2) & 0xff);
        
byte num6 = (byte)(((num3 * 0x10) + num4) & 0xff);
        
byte[] bytes = new byte[] { num5, num6 };
        
return Encoding.BigEndianUnicode.GetString(bytes);
    }

  写到这里问题基本上解决了,可是如果您的页面上有n多的input ,你还用这个工具一个input,一个input,把其中的Value Copy –Convert-Parse,到你的页面上吗? 其实我们可以写一个正则表达式,用正则表达式来找出input 中的Value, 然后编码之后,在把原先的Value 替换成编码后的Value,这样的话,即省了功夫,又不会出错(除非你的正则有问题), 如果你不清楚怎么写的话,见一下代码:
protected   void  Button1_Click( object  sender, EventArgs e)
    
{
        
string strPatter = @"(<input\s*[^>]*value\s*=\s*"")([^""]*)("".*?/>)";
         //txtcontent为需要替换的
         //txtresult为结果
        Regex rgx 
= new Regex(strPatter, RegexOptions.Multiline);
        
this.txtresult.Text = rgx.Replace(txtcontent.Text, new MatchEvaluator(Encode));
    }

    
// 调用委托
     private   string  Encode(Match m)
    
{
        
string strValue1 = m.Groups[1].Value;
        
string strValue2 = m.Groups[2].Value;
        
string strValue3 = m.Groups[3].Value;

        
return strValue1 + EncodeUniCode(strValue2) + strValue3;
    }

    
// 对中文编码成Unicode
     private   string  EncodeUniCode( string  input)
    
{
        Encoding bigEndianUnicode 
= Encoding.BigEndianUnicode;
        
char[] chArray = input.ToCharArray();
        
string str = "";
        
foreach (char ch in chArray)
        
{
            
if (ch.Equals('\r') || ch.Equals('\n'))
            
{
                str 
= str + ch;
            }

            
else
            
{
                
byte[] bytes = bigEndianUnicode.GetBytes(new char[] { ch });
                str 
= (str + @"\u") + string.Format("{0:X2}", bytes[0]) + string.Format("{0:X2}", bytes[1]);
            }

        }

        
return str;
    }

编码工具下载

备注:很不错的编码的例子。赞一个


asp.net URL编码与解码 通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义 立即下载

相关推荐

压电陶瓷传感器避坑指南:实测阻抗匹配对信号输出的影响(附示波器调试技巧)

本文深入探讨压电陶瓷传感器在工业振动监测中的阻抗匹配问题,通过等效电路模型和实测数据揭示负载阻抗对信号输出的关键影响。文章提供从元件选型到示波器调试的完整解决方案,特别强调100kΩ以上负载阻抗的重要性,并分享JFET缓冲器设计和PCB布局的实用技巧,帮助工程师避免信号失真和输出不稳定问题。

ooo22的博客 516

ASP.NET编码与解码

在Web开发中经常涉及到编码与解码的问题,牛腩中也涉及到过,在看《ASP.net本质论》的过程中,有对这个问题的清晰讲解: Html编码与解码:当页面需要显示Html标记,使用编码和解码避免冲突。 Url编码与解码:当包含ASCII以外的字符时,用URL编码与解码将其转换为有效的ASCII字符集。 1、Html编码与解码 将Html标记语言出来的时候,浏览器会自动将其解...

web开发 318

基于分段线性近似的Softmax硬件加速器设计

本文深入探讨了基于分段线性近似的Softmax硬件加速器设计。针对深度学习模型中Softmax函数在硬件实现时指数运算成本高昂的问题,提出用分段线性拟合替代传统泰勒展开,通过一次乘加操作高效完成计算,并详细分析了输入范围压缩、精度与硬件资源权衡、以及包含地址生成、参数查找、乘加计算和归一化的完整硬件架构。该方法在保证精度的同时,显著提升了AI边缘芯片的推理速度和能效。

weixin_28278377的博客 312

ASP.NET中的URL编码解码

在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗? 测试: string file="文件上(传)篇.doc"; string Server_UrlEncode=Server.UrlEncode(file); string Server_UrlDecode=Server.UrlDecode(Server_UrlEncode); string HttpUtility_UrlEncode=...

资料汇总整理-仅供个人学习使用 3097

Habitat安装全网最详细教程,手把手带你跑通example.py(全网唯一)

全网最详细具身智能仿真平台habitat的安装教程

shannanshouyin的博客 2754

Wine7.22实战:如何在Ubuntu上完美运行通达信和微信(附字体配置技巧)

本文详细介绍了如何在Ubuntu系统上使用Wine7.22版本,完美运行通达信和微信这两款Windows专属软件。通过选择稳定的Wine7.22版本、利用现成的兼容容器,并重点解决了中文字体渲染的核心难题,提供了从环境搭建、字体配置到软件安装调优的一站式实战指南,帮助用户在Linux环境下无缝使用关键金融与通讯工具。

weixin_29280657的博客 549

asp.net 编码 解码

编码代码: System.Web.HttpUtility.HtmlEncode("<a href=\"http://hovertree.com/\">何问起</a>"); 解码代码: System.Web.HttpUtility.HtmlDecode("&lt;a href=&quot;http://hovertree.com...

weixin_30416497的博客 188

Hi3559AV100制作ext4文件系统和烧录emmc

1、首先生成所需文件系统,见本博客&lt;Hi3559AV100文件系统制作cramfs&gt;。 2、使用工具生成EXT4文件系统 ./make_ext4fs -s -l 96M rootfs_hi3559av100.ext4 ./rootfs 3、烧录文件系统 mw.b 0x82000000 ff 0x12C00000;tftp 0x82000000 STM_...

阿Sir问道 7033

asp.net 页面编码 设置的几种方法

1如果要为整个项目设置页面编码,那么就可以在 Web.config 文件中添加一个 Globalization 属性,然后设置它的 fileEncoding、requestEncoding,和 responseEncoding 特性:                            2如果要为单独的页面设置编码,那么就可以设置 @ Page 指令的 Re

dabian@1987 7981

IT资产管理(三)之GLPI资产录入

glpi 在 10 版本之后已经有自带的 glpi-agent 代理程序可自动获取服务器、电脑等的信息并进行自动录入和更新,不再依赖 10 版本之前的 fusioninventory 插件或者第三方资产统计平台 OCS Inventory 等

予挚之的博客 2980

深入剖析 Wenet 下 AISHELL-1 的 run.sh 脚本:从数据准备到模型训练

run.sh脚本用于处理 AISHELL-1 数据集的整个训练和测试流程。我们将逐步分析脚本中的每个部分,包括环境变量、参数设置、各个阶段的执行等。stage: 设置脚本的起始阶段(如数据准备)。stop_stage: 设置脚本的结束阶段。通过对 Wenet 下 AISHELL-1 的run.sh脚本的详细剖析,我们希望你能更好地理解每个步骤的功能及其背后的原理。此脚本不仅为模型训练提供了便利,也为用户自定义和扩展训练流程提供了基础。希望本教程能帮助你顺利完成语音识别项目!

帅小柏的博客 1631

asp.net常见编码与解码

本文介绍asp.net 前台编码和后台解码的功能

我的博客,一个程序员的博客 491

DeFi核心协议代码解析

本文解析了DeFi两大核心协议Uniswap V2和Compound的智能合约架构与关键代码。Uniswap V2采用恒定乘积公式(x*y=k)实现自动做市,核心合约包括Factory、Pair和Router,具备流动性铸造、代币兑换和TWAP预言机功能。Compound借贷协议通过cToken合约管理存款和借款,采用动态利率模型和抵押率机制,包含资金利用率计算、清算触发等核心算法。两协议均采用模块化设计,通过智能合约实现去中心化金融服务的核心逻辑。

闲人编程的博客 933

asp.net html解码,asp.net+js实现批量编码与解码的方法

本文实例讲述了asp.net+js实现批量编码与解码的方法。分享给大家供大家参考,具体如下:/p>"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">C#代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Web...

weixin_32462499的博客 210

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

asp页面和Asp.net页面传中文参数UrlEncode以及接收解码。JS编码和Asp.net编码

asp页面和Asp.net页面传中文参数UrlEncode以及接收解码 asp.net用Get方式传输的URL为:"WebPage.asp?str="+HttpUtility.UrlEncode(str)  ,解码方式为HttpUtility.UrlDecode(Request.QueryString["str"].ToString().Trim())  asp的Get方式传送为"webPage...

hljqfl的专栏 2056

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

asp.net编码解码

<br />一般有3种方法:<br />1.设置web.config文件 <br /><system.web> <br />...... <br /><globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" /> <br />...... <br /></system.web> <br />2.传递中文之前,将要传递的中文参数进行编码,在接收时再进行解码。 <

青青的专栏 3498

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

js 编码、解码与asp.net 编码、解码

js对URL提供:escape,encodeURI,encodeURIComponent 的编码方法encodeURIComponent:推荐使用,它是将中文、韩文等特殊字符转换成utf-8格式的url编码,以是假定给背景转达参数必要利用encodeURIComponent时必要背景解码对utf-8撑持(form中的编码体例和当前页面编码体例不异) 1、escape:不编码字符有69个:*,+,...

weixin_34268610的博客 164

asp.net 基本的编码解码 Server.UrlEncode,Server.HtmlEncode

Server.UrlEncode("");//URL编码             Server.UrlDecode("");//URL解码            Server.HtmlEncode("");//编码             Server.HtmlDecode("");//解码

LYBWWP 1889

JS与ASP.NET的 urlencode编码 加解码操作——解决前端无法传html代码到后端

JS中 urlencode 编码 :encodeURIComponent(编码的具体内容) 解码 :decodeURIComponent(解码码的具体内容) 原理:对URL的组成部分进行个别编码,而不用于对整个URL进行编码 ASP.NETurlencode 编码 :Uri.EscapeDataString(url) 解码 :Uri.UnescapeDataString(url) ...

laizhixue的博客 1235

中文参数 Asp.net后台编码 JavaScript前台解码

Asp.net项目添加引用:Microsoft.Jscript 后台使用如下方法编码:Microsoft.JScript.GlobalObject.escape() 前台JavaScript使用方法unescape()解码

m214124808的博客 350

ASP.NET对数据进行HTML编码将其绑定到DrowdownList并解码的解决方案

声明:本文系作者原创,转载请声明转自http://home.cnblogs.com/u/sunt2012/ 谢谢合作   1、        问题背景 在Web开发过程中,需要对用户输入的数据进行验证和过滤,以防止注入攻击,其中有比较常用的方式就是过滤和编码。 过滤,就是在过滤用户输入的敏感字符,可以采用限制用户输入敏感字符和自动删除敏感字符,限制用户输入就会引发用户的不满,这也不能输那

st609877063的专栏 676

asp.net MVC中网页编码与解码

前几天在写MVC项目的时候遇到一个网页源代码编码解码 Server.HtmlDecode( ) 与 System.Web.HttpUtility.HtmlDecode( ) 网页源码的编码与解码

国家一级甩锅运动员 5579

asp.net中gb2312与utf8编码与解码

asp.net 中,默认的url参数是用utf-8编码的,但是有很多时候不是用的默认编码,比如gb2312也是常用的之一,如下:编码: 1stringtmp1=System.Web.HttpUtility.UrlEncode(".net技术",System.Text.Encoding.GetEncoding("GB2312"));23stringtmp2=System.Web....

weixin_30725315的博客 183
上一篇: MVC常用控件
下一篇: [VS2010].NET4.0环境下使用.NET2.0程序集,出现“混合模式程序集异常”
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值