zoukankan      html  css  js  c++  java
  • 用jsp写的网页 怎么在传递参数时包含中文?

    用jsp写的网页 怎么在传递参数时包含中文?

    2011-06-21 17:58yuqiangdede | 分类:其他编程语言| 浏览428次
    jsp中
    <%@ page contentType="text/html;charset=gb2312" %>
    <a href="CartServlet?action=search&cname=<%= st %>"><%= st %></a>
    在Servelt中
    
            request.setCharacterEncoding("gb2312");
        	response.setContentType("text/html;charset=gb2312");
        	response.setCharacterEncoding("gb2312");
    
           String cname = request.getParameter("cname");
    
    拿到的cname是一堆乱码?
    
    怎么解决?谢谢了》、?最好不用过滤器~
    精彩回答
    2011-06-21 18:29
    request.setCharacterEncoding设置了用gb2312去转码了,这里是不会有什么问题的;关键看看你的页面..
    页面用的是超链接,超链接采用的是get的方式进行请求,而参数部分如何发送给服务端取决于浏览器及相关设置:
       IE中uri使用UTF8进行转义,后半部分用UTF8编码
       FireFox则使用页面编码进行转义
    所以你试试在FireFox打开看看,是否可以正常获取了?
    彻底解决问题的话,超链接的uri和参数部分不要直接带中文
    在cname=<%= st %>"> 里面的st先编码一下 
    st = URLEncoder.encode(st,"gb2312"); ---转变为%&*&(^&这种不可读的东西,查看页面源代码也可以看到。
    此后浏览器发送请求时进行编码转义将不会做任何处理(不存在中文等特殊字符),于是服务端可以得到正确的gb2312转义过的字符信息了。
    追问
    哦 我这个在Servelt中 使用cname 来构建sql语句 结果cname是 %CB%AE%B9%FB 
    而 mysql用的是GB2312 那能不能吧那一堆乱码转换回中文呢?  刚开始学jsp到处是问题~~谢谢了哈
    回答
    这堆不是乱码,是转义后的编码;
    转回中文也类似的做法:URLDecoder.decode(str,"gb2312")
    提问者评价
    万分感谢~
    评论|1

    littleatp|六级采纳率49%

    擅长:JAVA相关

    按默认排序|按时间排序

    其他2条回答

    2011-06-21 21:14wu1g|五级
    get取中文很多时候都会出现中文乱码的,一个笨方法不用get,所有值用表单提交,这种是绝对不会出现中文乱码的,给你的例子
    
    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    	<head>
    		<title>test</title>
    
    	</head>
    <body>
    		<form name="frm">
    			<input type="hidden" name="test1" />
    			<input type="hidden" name="test2" />
    		</form>
    			<a href="javScript:down('测试1','测试2');" >【测试】</a>
    		
    	</body>
    </html>
    <script type="text/javaScript" language="javaScript">
    	function down(obj1,obj2){
    		document.getElementByName("test1").value=obj1;
    		document.getElementByName("test2").value=obj2;
    		document.frm.method="post";
    		document.frm.action="<%=basePath + "test.do"%>";
    		document.frm.submit();
    	}
    </script>
    评论|0
    2011-06-21 18:04caesar1800|五级
    传之前先转换下参数的编码st=URLEncoder.encode(st,"gb2312");
  • 相关阅读:
    Mac快捷键符号解释及用法介绍
    Mac使用小技巧:Fn键的妙用技巧
    Mac快捷键大全
    idea 开发SpringBoot项目并打包docker镜像部署到节点上
    .netcore linux开机自启脚本
    javascript Event Loop
    mysql函数使用技巧
    MySql查找慢查询sql
    js优先队列和链表
    mysql性能优化
  • 原文地址:https://www.cnblogs.com/tgxblue/p/4217352.html
Copyright © 2011-2022 走看看