在做.net项目的时候,在js中给url链接传值,然后点击事件会导到连接http://localhost:7701/Test/Index?testname=中文字符,在ie浏览器中输入此链接,跳转到新的页面,新的页面中cshtml会通过@Request["testname"]获取请求中的testname的值,明明在chrome中一切都辣么正常,输出的也是”中文字符”,但是ie却得到了一串�����ַ� (千万只草泥马在脑海中奔腾而过)。
但是宝宝并不气馁,然后我检查了html中的<meta charset="utf-8"> ;webconfig中的配置<globalization requestEncoding="utf-8" responseEncoding="utf-8" />;cshtml文件的编码格式也是utf-8,一切还是那么正常,之后我就在那里傻眼了很久,然后就想着就把url里的testname加密之后再解密吧,也许有效果。于是就只是在js中加密了一下encodeURI(testname),在@Request["testname"]这里并没有解密,想看看是否加密正确,但是我发现虽然我没有解密,但是在chrome和ie中得到的居然都是正确的中文字符。作为前端小白的我简直要泪目了~~于是乎就在度娘上看这是为什么,原来web服务器自带解码,套用一个博客里说的就是前台的两次编码第一次是将所有的中文转换成ASCII码。第二次针对ASCII字符串再次的编码。