如何自动识别判断url中的中文参数是GB2312还是Utf-8编码?

a151720786 2010-09-15 09:46:20
加精
先看下面两个Url,他们传递的参数一样么?
aaa.aspx?tag=.net%bc%bc%ca%f5
aaa.aspx?tag=.net%e6%8a%80%e6%9c%af

看起来好像是不一样,其实他们都是对".net技术"进行了UrlEncode,不过一个是GB2312的编码,一个是Utf-8的编码。
Response.Write(Request.QueryString["tag"]);
可以得到Utf-8传过来的正确参数,而GB2312是错误的
可以用下面的得到GB2312的URL

string q = Request.Url.Query;
System.Collections.Specialized.NameValueCollection nv =
System.Web.HttpUtility.ParseQueryString(q, System.Text.Encoding.GetEncoding("GB2312"));
Response.Write(nv["Tag"]);

问:

如何自动识别判断url是GB2312还是Utf-8编码?这个需求是因为从百度来的很多URL的中文参数都是GB2312的
...全文
8630 193 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
193 条回复
切换为时间正序
请发表友善的回复…
发表回复
RLib 2012-08-13
  • 打赏
  • 举报
回复
Content-Type的charset
那年春天 2012-06-25
  • 打赏
  • 举报
回复
16楼方法正解啊 遇到相同问题的可以通过16的正则表达式解决 我用在我的java程序里了 谢谢
jk203mn 2011-07-06
  • 打赏
  • 举报
回复
学习了。。。
lb90214 2011-06-20
  • 打赏
  • 举报
回复
还是有点难以理解
cxsxdxnx 2010-09-25
  • 打赏
  • 举报
回复
不错不错,真的不错。学习。
paual779 2010-09-25
  • 打赏
  • 举报
回复
支持29 楼的 思路!
kerro1123 2010-09-25
  • 打赏
  • 举报
回复
路过学习!!!!!
z414635979 2010-09-25
  • 打赏
  • 举报
回复
每天回帖即可获得10分可用分
valensian 2010-09-25
  • 打赏
  • 举报
回复
边学习,边得分
让我带你走 2010-09-25
  • 打赏
  • 举报
回复
个人认为还是严谨的正则表达式可以解决此问题
tiancaixgd 2010-09-25
  • 打赏
  • 举报
回复
[Quote=引用 161 楼 gaoch_2000 的回复:]
引用 29 楼 huliang82 的回复:

通用的判断方法:

假定他就是 GBK 的编码:
则将其转换成 utf-8 然后再转换回来后与没有转换之前是相等的。这样假设成立,也就是GBK编码。

可以描述成这样:

字符串 abc 如果是GBK编码的话,经过转换

abc -> GBK -> UTF-8 -> GBK -> abc2

如果: abc == abc2 ……


这个方法存在很多的漏洞,比如gbk和utf编码有相同的时候,小的程序用用还行,大型应用的话这种方法太不科学了
[/Quote]

关键是获取 到底是 GBK 还是 UTF-8 编码的目的是什么 ,如果是单纯的获取编码 这个的确有问题
但是如果是为了进行解码 这个方法就没有问题了
gbk和utf编码相同的时候 用什么方式解码得到的解码数据都一样,所以这个方法就是对的了
ztw2010 2010-09-25
  • 打赏
  • 举报
回复
有事没事先顶一个
hngooo 2010-09-25
  • 打赏
  • 举报
回复
说个思路,gb2312是两个字节存储一个汉字,utf-8是三个,根据这点去判断
yyqzh9788 2010-09-24
  • 打赏
  • 举报
回复
值得看看一看
khb_y 2010-09-24
  • 打赏
  • 举报
回复
路过接分
jamesking2008 2010-09-23
  • 打赏
  • 举报
回复
精典解决方法。学习。
ss1313 2010-09-23
  • 打赏
  • 举报
回复
不是很明白
江南_CAO 2010-09-23
  • 打赏
  • 举报
回复
学习中,谢了啊
zhanzhao1989 2010-09-23
  • 打赏
  • 举报
回复
支持楼上全部人
手机写程序 2010-09-23
  • 打赏
  • 举报
回复
学习下!
加载更多回复(148)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧