+ -
当前位置:首页 → 问答吧 → asp.net开发中关于接收url参数值时出现乱码的问题

asp.net开发中关于接收url参数值时出现乱码的问题

时间:2010-11-02

来源:互联网

我在浏览器输入地址访问页面时 其中一个参数的值为:5419-7206-1/I·341 而我接收到的值为乱码:5419-7206-1/I��341
前提:由于中间还夹杂着其他情况,所以我没有在webconfig中设置编码类型(如果我在webconfig中设置编码类型为gb2312时不管页面编码类型设置为什么类型的都是是正常的,而设置在webconfig中其他的编码类型的话不管页面编码类型设置为什么类型的都会出现我上面的情况),而设置了页面的编码类型,我也尝试过解码 但是解码之后的结果还是和接收到的值:5419-7206-1/I��341是一样的 
例子:
页面上加上代码:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  
webconfig 没有设置编码类型
对接收到的值进行解码:(参数值为:5419-7206-1/I·341 接收到的参数值为:5419-7206-1/I��341)
HttpUtility.UrlDecode("5419-7206-1/I��341",Encoding.UTF8) 结果: "5419-7206-1/I��341"
HttpUtility.UrlDecode("5419-7206-1/I��341",Encoding.GetEncoding("gb2312")) 结果:"5419-7206-1/I��341"

我单独创建了一个html页面,放了一个intput控件 value设置为"5419-7206-1/I·341" 
测试结果为:如果把页面编码类型设置为utf8就会出现以上乱码,如果页面编码类型设置为gb2312就正常了  
 
提问:对于以上请求怎么样才能在webconfig不设置编码类型的情况下 使接收到的值为正常的?请高手指点

作者: ligenyingsr   发布时间: 2010-11-02

地址栏传参数需要进行编码
Server.UrlEncode("I·341")

如果是直接在浏览器地址栏里面输入的,可能就不好控制了

作者: net_lover   发布时间: 2010-11-02

处理的是地址栏中直接输入的请求 无法进行处理

作者: ligenyingsr   发布时间: 2010-11-02