重定向带中文参数跳页面显示中文示例代码

最近发现一个问题,访问servlet,在其中使用重定向带中文参数跳转页面,发现地址栏取不到参数为中文的情况,纠结一小会,下面讲讲乱码原因:对于URL地址栏里面的内容一般都是ISO-8859-1编码的,所以呢,我们如果使用重定向,那么就是重新修改地址栏里面的内容(URL),那么这是如果我们要在URl中加入中文参数,必须将中文以ISO-8859-1的编码,然后才可以显示在地址栏上,不然就会实现中文找不到的情况或者地址栏中文乱码,不罗嗦看代码,大家就会明白。

下面贴我的代码了,不明白可以交流:

在WebRoot下面新建两个jsp文件:

(1)index.jsp

(2)success.jsp

在src下面新建一个servlet文件夹,里面创建一个servlet,名字为:UserSerlvet.java

下面继续贴代码咯:

(1)index.jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
  <a href="servlet/UserSerlvet?name=张三的零食">访问</a>
</body>
</html>

(2)success.jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <body>
   <%=new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8") %>
  </body>
</html>

(3)web.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>
  <servlet>
    <servlet-name>UserSerlvet</servlet-name>
    <servlet-class>servlet.UserSerlvet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UserSerlvet</servlet-name>
    <url-pattern>/servlet/UserSerlvet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

(4)src/servlet中的UserSerlvet.java代码:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UserSerlvet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doPost(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        /**
         * 注意,浏览器Get请求中的url只能是ISO-8859-1编码,如果
         * 要在url后面带参,必须将数据转为ISO-8859-1编码才可以实现URL后面带
         * 中文参数。到页面一定要记得将ISO-8859-1转为UTF-8显示中文。
         */
        //方式一:在程序中,默认编码为utf8或者GBK,一般为utf8,这时的中文要作为参数实现重定向传递,一定要转ISO-8859-1才可以传成功!

        //String name = new String("张三的零食".getBytes("utf-8"),"iso-8859-1");
        //方式二:从页面获得ISO-8859-1编码,不需要转码,直接重定向到页面即可,到页面在以UTF-8解码
        String name = request.getParameter("name");
        System.out.println(name);//控制台是乱码,此时它是ISO-8859-1,所以显示必然乱码
        response.sendRedirect("../success.jsp?name="+name);

    }

}

以上就是全部代码了,可以直接复制,进行测试,有问题一起交流。

此文小编自测通过,放心测试吧!!

时间: 2024-12-21 20:02:24

重定向带中文参数跳页面显示中文示例代码的相关文章

js前台页面显示中文,后台存对应的value值实现

field: 'rightType', title: '权益类型', //width: 100, align: 'left', valign: 'top', sortable: true, formatter:rightTypeFormat 其实是采用了转换函数实现前台页面显示中文 //显示格式化,将value的值转换为中文 function rightTypeFormat(value, row, index) { if (value == "") { value = "请选

php接收GET方法传入的中文参数乱码问题

最近做PHP的webService服务器,发现用Get方法获取参数时获取到的参数时乱码.一番折腾后发现时浏览器本地语言的问题. 首先先来看下简单的测试代码: <?php header("Content-Type:text/html;charset=UTF-8"); $name = $_GET['name']; var_dump($name); ?> 测试结果如下: 代码中声明了响应内容的编码为utf-8,显示的内容确实乱码.在这里请注意var_dump出变量的长度只有4 ,

反编译可以显示中文的apktool(ShakaApktool)

感谢rover12421 本次主要更新ShakaApktool 1.更新apktool版本到9c874a8 2.添加不解析.9资源选项 3.添加使用默认框架选项,解决更新apktool不删除1.apk反编译出错问题 4.unkownFiles 压缩模式优先试用原包模式 5.增加res资源没有被arsc引用,没有生成id,就会丢失问题 6.增加String Style 中连续`;`引发解析错误修正 最重要的更新: *********新加mc参数,可以直接显示中文了 我放一个效果图大家就明白了: 这

中文参数引发的乱码问题

新手一枚,使用spring MVC框架开发项目 路径中文传输变乱码 找到的解决方法 JS URL传中文参数引发的乱码问题 解决方法如下: 1.在JS里对中文参数进行两次转码  代码如下: var login_name = document.getElementById("loginname").value; login_name = encodeURI(login_name); login_name = encodeURI(login_name);//必须加密两次 或 window.l

从js向Action传中文参数出现乱码问题的解决方法

Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题:但JSP中用到JS,并从JS向Action传中文参数,就会出现中文乱的现象. 经过实践发现下面的方法可以解决中文乱码问题: JSP的JS中:中文参数用encodeURI(encodeURI(中文参数)),经过两次转码.例如: function show(next,id,realName){ document.forms['f2'].action="usersearchNextPage?next=&qu

数据库中读取出0或1,页面显示禁用或正常

数据库中存字段比如: 性别:男1.女0 状态:正常1 禁用0 权限:管理员0 普通用户1 如何读取出来后,在JSP页面显示中文意思,这里要用到朝EL表达式的三目运算,与JAVA的三目运用一样 <td>${user.role eq 0?"管理员":"普通用户" }</td> <td>${user.status eq 0?"禁用":"正常" }</td>

将Date格式日期在前端页面显示

将Date格式日期在前端页面显示需要在代码中转换为String形式 List<IndustryBean> list=industryService.getByletterOrDateList(industryBean); for (int i = 0; i < list.size(); i++) { Date date = list.get(i).getCreateDate(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy

EF(ServerFirst)执行存储过程实例1(带输出参数)

1.不含动态sql.带输出参数存储过程调用实例 a.存储过程代码: b.EF自动生成代码(包括对应ObjectResult的实体模型): c.调用存储过程代码实例: 总结: ObjectParameter参数对应输出类型时,不必指定类似Output等 ObjectParameter的命名空间:using System.Data.Objects; ObjectParameter参数的Name是对应存储过程参数字符串去掉@符号,例如存储过程参数‘@Count int output‘,对应Name为”

Python使用urllib时url带中文参数的问题

urllib.request.urlopen(url).read().decode('utf-8') url中带中文参数会出错:UnicodeEncodeError: 'ascii' codec can't encode characters in position 84-86: ordinal not in range(128) 需要对中文进行转码 url = GEOCODE_BASE_URL + urllib.parse.quote('北京市') 文档中对urlib.parse.quote的