Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1228146
  • 博文数量: 699
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 4970
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-15 13:45
文章分类

全部博文(699)

文章存档

2011年(1)

2008年(698)

我的朋友

分类:

2008-10-15 13:46:32

在项目中,我们经常遇到需要在jsp页面切换中传递中文字符。这主要有两种方式。
  1. URL方式,例如:苹果¶m=%20D%20B
  2. FORM方式,例如:

                     

                              

                             

                             

                    

     我们将针对这两种情况,分别提供中文正确传递的解决方法。

情况1:URL方式

例如:苹果¶m=%20D%20B

  • 一般来说我们很少直接在URL里面把参数写成中文,如例子中的"type=苹果"这样传递。如果出现这种情况,在我们的接收参数的页面我们只需要做个简单的转换就可以了。

             代码test1.jsp:(主要部分)

            <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

        <%

            String type = request.getParameter("type");

            String result = new String(type.getBytes("iso-8859-1"), "gb2312");      

            out.println(result);   

      %>

  • 更普遍的做法,就是对url中的中文字符进行编码,变成类似type=%20D%20B这样的字符。

代码MyJsp1.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.net.*" %>

test

代码MyJsp2.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="java.net.*" %>

String tempVal = URLDecoder.decode(request.getParameter("act"));
out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));

      情况2:FORM方式

      请注意,我们只是讨论在

这种形式的中文情况,因为在enctype="multipart/form-data"的时候通过解析出来中文也可以运用这种方法进行字符转化,所以不再重复讨论。

  • 这种情况最简单。

代码MyJsp1.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>




代码MyJsp2.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

request.setCharacterEncoding("gb2312");

out.println(request.getParameter("act"));

或者

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

String tempVal = request.getParameter("act");

out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));

  • 情况。

代码MyJsp1.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>




代码MyJsp2.jsp:

           

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

String tempVal = request.getParameter("act");

out.println(new String(tempVal.getBytes("ISO-8859-1"), "gb2312"));

PS:

      本文不讨论针对URL进行加密的操作,只是针对URL中文的基本编码处理。另外,在script中可以运用escape(),encodeURI(),encodeURICompoent()进行相关的URL编码;可以作为script中文编码的参考解决方案。


--------------------next---------------------

阅读(371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~