
乱码是什么样的?有很多百分号的那种,还是有很多问号的那种?
有很多百分号的那种:
一般url传的中文是url编码的,使用时要转一下,serverDecUrlcode()
有问号的那种
是utf-8的编码,在gb2312中显示的结果;你把页面的编码格式改统一就行了。可以用dreamweaver来改。
IE缺省对URL后面的参数是不编码发送的,但是Tomat缺省是按ISO8859-1来进行URL编码的,因此才会出错。
方法一:
对URL链接进行二次编码:
<a
onclick="javascript:windowopen(encodeURI(encodeURI('/DispatchActiondoefFormEname=FKRY0001&code_type=中文参数')))">测试</a>
或者单独对参数进行二次编码:
var
code_type
=
"中文参数";
code_type
=
encodeURI(code_type);
code_type
=
encodeURI(code_type);
windowopen("/DispatchActiondoefFormEname=FKRY0001&code_type="+code_type);
Service:
String
code_type
=
requestgetParameter("code_type");
//这句话一定要写,因为如果不写的话编码就是%E5%A6%88%
code_type
=
javanetURLDecoderdecode(code_type,"UTF-8");
有人提出为什么要在客户端对字符串重复编码两次呢?
如果因为项目需要,不能指定容器使用何种编码规则来解码提交的参数,比如:需要接收来自不同页面,不地编码的参数内容时。
(又或者是开发人员被这有点复杂的东西搞得晕头转向,不懂得如何正确的去做好这接收参数的工作)
这个时候,在客户端对参数进行二次编码,可以有效的避开“提交多字节字符”的这个棘手问题。
因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的
Ascii
字符串。(这里把编第一次的结果叫成
[STR_ENC1]
好了。[STR_ENC1]
是不带有多字节字符的)
再编一次后,提交,接收时容器自动解一次(容器自动解的这一次,不管是按
GBK
还是
UTF-8
还是
ISO-8859-1
都好,都能够正确的得到
[STR_ENC1])
然后,再在程序中实现一次
decodeURIComponent
(Java中通常使用
javanetURLDecoderdecode(,
"UTF-8"))就可以得到想提交的参数的原值。
简单来说,就是Tomcat服务器会自动帮你做一次URLDecode,再加上你自己在Service代码里面写的URLDecode,一共就是两个Decode了。既然要两次Decode,当然就需要两次Encode了。或许你会问,干脆只Encode一次,然后在java代码里不Decode,呵呵,这个也是不行的,这其实也就是为什么要进行两次Encode的原因吧。
方法二:(经测试不支持IE8)
>
程序是用utf-8编码写的吧?国内用户的浏览器大部分默认编码都是GBK,如果URL中含有中文参数,这个参数就是GBK编码的,在utf-8编码的程序中跑肯定就是乱码。需要转一下码:
mb_convert_encoding(参数, 'UTF-8', 'GBK')
或者
iconv("GBK", "UTF-8//IGNORE", 参数);
你需要保持jsp页面和Servlet类中的编码一致。
jsp页面:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<html>
<head>
<meta >
编码问题
一般有中文参数的时候编码应该是GBK或GB2312
通常默认UTF-8
还有传中文参数的时候请用:
ServerUrlEncode(url);加密
在接受中文参数的时候请用
ServerUrlDecode(url);解密
去你的网站里在传参时和接参时分别用我上面提供的方法进行处理
去webconfig中修改成
<globalization
requestEncoding="GB2312"
responseEncoding="GB2312"
/>
以上就是关于iis中让url传递中文会出现乱码,如何配置全部的内容,包括:iis中让url传递中文会出现乱码,如何配置、JSP对URL链接中的中文乱码处理方法总结、url过码后,php程序获取参数出现乱码,该怎么解决等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)