这次给大家带来在js中encodeuri(url)怎样才能不出现乱码?,在js中使用encodeuri(url)的注意事项有哪些,下面就是实战案例,一起来看一下。
一般情况下, 发送 encodeuricomponent(parmename)+=+encodeuricomponent(parmevalue);
接收时, 直接 string paramvalue = request.getparameter(paramname); // 容器自动解码.
我们知道 encodeuricomponent 使用的是 utf-8 编码规则来编的.
如果 request.getparameter(paramname) 时,容器也按 utf-8 解的话,是正确的. 根本无须在客户端
进行二次的 encodeuricomponent(...)
如果 request.getparameter(paramname),容器没有按 utf-8 解的话, 结果只有一个,就是乱码!
容器按什么编码来解码,决定于 request.setcharacterencoding(***) 或者 服务器程序配置.
如果你在 jsp 程序中,能够 request.setcharacterencoding(utf-8), 并且 修改服务器配置,让容器在解 get 提交的参数时,使用 utf-8.
客户端提交前不用二次编码, 接收时,也只要直接 request.getparameter(paramname) 即可
为什么网上会有人提出在客户端对字符串重复编码两次呢.
如果因为项目需要,不能指定容器使用何种编码规则来解码提交的参数, 比如:需要接收来自不同页面,不地编码的参数内容时。 (又或者是开发人员被这有点复杂的东东搞得晕头转向,不懂得如何正确的去做好这接收参数的工作)
这个时候,在客户端对参数进行二次编码,可以有效的避开“提交多字节字符”的这个棘手问题。
因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的 ascii 字符串。(这里把编第一次的结果叫成 [str_enc1] 好了。[str_enc1] 是不带有多字节字符的)
再编一次后,提交,接收时容器自动解一次 (容器自动解的这一次,不管是按 gbk 还是 utf-8 还是 iso-8859-1 都好,都能够正确的得到 [str_enc1])
然后,再在程序中实现一次 decodeuricomponent (java中通常使用 java.net.urldecoder(***, utf-8)) 就可以得到想提交的参数的原值。
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
相关阅读:
简述css中clearfix 的原理
css1与css2的常用属性
怎样用css3制作登录框
以上就是在js中encodeuri(url)怎样才能不出现乱码?的详细内容。