表单传参中文乱码解决方案

参数传递:
被封装到 jsp内置对象:request

1、URL 传值(不支持中文)
    http://localhost:8080/javaWEB_09/demo1.jsp?username=admin&age=21&sex=1
    第一个参数:?
    后面参数:使用&
2、利用表单:默认get  (不支持中文) 
    http://localhost:8080/javaWEB_09/demo1.jsp?username=adin&age=12312&sex=1  
    <!-- form method=get  等价于 URL -->
    <form action="demo1.jsp" method="get">
        username:<input type="text" name="username"/><br>
        age:<input type="text" name="age"/><br>
        sex:<input type="radio" name="sex" value="1">男
            <input type="radio" name="sex" value="0">女<br>\
           <input type="submit" value="提交"/>
    </form>
3、超链接:(不支持中文)
    <a href="demo1.jsp?age=12&username=amdin&sex=0">超链接</a>

上述几种参数传递方式:都属于get请求
    get特点:
        效率高,大小有限制 4k
        不安全,显示在地址栏中

    post:(支持中文)
        效率低,大小没限制
        安全,参数不会显示在地址栏中


    Http协议中:
        form 参数
        username:admin
        password:1231
        age:21
        sex:1

4、隐藏域: 不会显示但是会随着form表单数据传输到后台
    <input type="hidden" name="id" value="12313"/>


补充:get、post请求中文乱码问题:

    1、如何解决post请求乱码问题(支持中文传输的):
        request.setCharacterEncoding("utf-8");
    如何解决get请求乱码问题:
        原因:默认情况下get请求使用的编码是tomcat的默认编码(iso8859-1)

        解决方案:
        ①、修改tomcat的默认编码为utf-8(不推荐使用)
           tomcat根路径 /conf   server.xml中:
            <Connector port="8080" protocol="HTTP/1.1" 
            connectionTimeout="20000" 
            redirectPort="8443"
            URIEncoding="utf-8"
           />
        ②、默认使用的iso8859-1编码对中文进行重新编码后传到到后台,
        后台接受一堆乱码:
            在后台接受后进行重新解码处理:
            String username = request.getParameter("username");
            byte[] bytes = username.getBytes("iso8859-1");
            String usernameNew = new String(bytes,"utf-8");

            String usernameNew = new String(username.getBytes("iso8859-1"),"utf-8");

        ③、不知道服务器默认编码
            function sbm(){
                var formObj = document.getElementById("myform");
                //对中文字段重新
                var name = document.getElementsByName("username")[0];
                //方言:支持iso8859-1编码传输
                name.value = encodeURI(name.value);

                formObj.submit();//提交form表单
            }

    总结如何解决web请求中的中文乱码?
        能用post就不用get
        get不要出现中文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值