首页 > 其他分享 >JSP中用post提交表单数据出现中文乱码的有效解决办法

JSP中用post提交表单数据出现中文乱码的有效解决办法

时间:2024-05-28 22:00:19浏览次数:20  
标签:编码 String age sex 乱码 JSP post public name

  1. 设置请求字符编码
    确保在处理表单数据之前设置请求的字符编码。你已经有 request.setCharacterEncoding("UTF-8");,确保它在所有代码之前执行

  2. 表单编码
    确保你的表单设置了 accept-charset="UTF-8" 属性:

    <form action="displayUser.jsp" method="post" accept-charset="UTF-8">
      姓名: <input type="text" name="name"><br>
      年龄: <input type="text" name="age"><br>
      性别: <input type="text" name="sex"><br>
      <input type="submit" value="Submit">
    </form>
    
  3. 页面和响应编码
    确保你的 JSP 页面设置了正确的编码,并且在返回响应时也设置了编码:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@ page import="java.io.UnsupportedEncodingException" %>
    
    <%
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
    response.setCharacterEncoding("UTF-8");
    %>
    
  4. JavaBean设置
    确保你的 JavaBean 类正确处理字符串的编码。如果使用的是 request.getParameter() 方法,确保在调用之前设置编码:

    public class User {
        private String name;
        private int age;
        private String sex;
    
        // Getter and Setter methods
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            try {
                // Tomcat的默认编码是 SO-8859-1 编码存储的
             //name.getBytes("ISO-8859-1") 将字符串 name 按照 ISO-8859-1 编码转换成字节数组
             //"UTF-8"将第一步得到的字节数组重新解码为字符串,这次使用 UTF-8 编码进行解码。
                this.name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            try {
                this.sex = new String(sex.getBytes("ISO-8859-1"), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    }
    

具体步骤:

  1. 修改表单

    <form action="displayUser.jsp" method="post" accept-charset="UTF-8">
      姓名: <input type="text" name="name"><br>
      年龄: <input type="text" name="age"><br>
      性别: <input type="text" name="sex"><br>
      <input type="submit" value="Submit">
    </form>
    
  2. 修改 JSP 页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    
    <%--实例化一个名为 "user" 的 JavaBean 对象--%>
    <jsp:useBean id="user" class="yulin.zhu.User" scope="request" />
    <%--将所有的请求参数都自动设置到 JavaBean 对象的对应属性中--%>
    <jsp:setProperty property="*" name="user" />
    
    <%
    request.setCharacterEncoding("UTF-8");
    response.setContentType("text/html; charset=UTF-8");
    response.setCharacterEncoding("UTF-8");
    %>
    
    <html>
    <head>
        <title>Display User Information</title>
    </head>
    <body>
    <h2>用户信息</h2>
    <%--通过<jsp:getProperty>标签获取并显示user对象的属性值--%>
    姓名: <jsp:getProperty name="user" property="name" /><br>
    年龄: <jsp:getProperty name="user" property="age" /><br>
    性别: <jsp:getProperty name="user" property="sex" /><br>
    </body>
    </html>
    
  3. 修改 JavaBean

    package yulin.zhu;
    
    public class User {
        private String name;
        private int age;
        private String sex;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            try {
                this.name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            try {
                this.sex = new String(sex.getBytes("ISO-8859-1"), "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
    }
    

标签:编码,String,age,sex,乱码,JSP,post,public,name
From: https://blog.csdn.net/2301_79858914/article/details/139277670

相关文章

  • PostgreSQL数据库实战:轻松修改字段名称
    哈喽,大家好,我是木头左!在本文中,将深入探讨PostgreSQL数据库中的一个强大功能,即如何轻松修改字段名称。无论你是一个新手开发者,还是一个经验丰富的DBA,这篇文章都将为你提供实用的技巧和建议。一、为什么需要修改字段名称?在开发过程中,经常会遇到需要修改表结构的情况,比如添加新......
  • Windows下CMD或DOS窗口显示中文乱码解决办法
    原因:输出的字符集与源文件字符集不一致如果源文件为UTF-8先运行字符集修改命令chcp65001再执行既有命令2、如果源文件为GB2312/GBK先运行字符集修改命令chcp936再执行命令3、如果源文件为BIG5先运行字符集修改命令chcp950再执行命令拓展:chcp(ChangeCodePage......
  • 宏景eHR showmedia.jsp SQL注入漏洞复现
    0x01产品简介宏景eHR人力资源管理软件是一款人力资源管理与数字化应用相融合,满足动态化、协同化、流程化、战略化需求的软件。0x02漏洞概述宏景eHRshowmedia.jsp接口处存在SQL注入漏洞,未经过身份认证的远程攻击者可利用此漏洞执行任意SQL指令,从而窃取数据库敏感信息。0......
  • 掌握Postman,开启API测试新纪元!
    Postman是一款流行的API测试工具和开发环境,旨在简化API开发过程、测试和文档编制。它提供了一套功能强大的工具,帮助开发人员更轻松地构建、测试和调试Web服务。Postman工具的优势****Postman可以快速构建请求、还可以保存以后再使用。Postman还提供响应结果的比较功能,可以......
  • postman中各种变量
    新建项目集合1、集合变量(项目变量,只适用于当前项目)获取、设置集合变量pm.collectionVariables.get("variable_key");pm.collectionVariables.set("variable_key","variable_value"); 2、环境变量(适用于某个环境,一个环境可以适用于多个项目集合)获取、设置环境变量pm.envi......
  • CentOS7安装PostgreSQL15以及PostGIS3.3
     安装Postgresqlyuminstall-yhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpmyuminstall-yhttps://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libzstd-1.5.5-1.el7.x86_64.rpmyum-yinstallpos......
  • 使用 Flask 框架编写的一个简单的 Python POST和GET接口
    安装FlaskpipinstallFlask 使用python实现POST接口fromflaskimportFlask,request,jsonifyapp=Flask(__name__)@app.route('/test',methods=['POST'])defsubmit():#获取JSON请求体data=request.get_json()#从请求体中提取参数......
  • SqlSugar:基于SQLSugar框架在 .Net环境中搭建PostgreSQL数据库访问、操作的框架,C#连接
    SqlSugar 是一款老牌.NET开源ORM框架,由果糖大数据科技团队维护和更新,开箱即用最易上手的ORM 优点:【生态丰富】【高性能】【超简单】【功能全面】【多库兼容】【适合产品】 【SqlSugar视频教程】 支持:.netframework .netcore3.1 .ne5.net6.net7.net8.n......
  • Xenocode Postbuild——C#代码混淆器使用方法
    安装不多作赘述使用步骤选择【application】选项卡,选择【add】,如果添加的是exe,则【Preset】选择第一项,添加的是dll则选择第二项  选择【Protect】选项卡,将两个都勾选上,然后点击按钮“selectstrings”,最后点击按钮"BuildApplication"如果第一次使用,请将文件中......
  • 【Postman接口测试】第一节.接口测试基础认识
    文章目录前言一、接口的基础   1.1什么是接口   1.2软件为什么需要接口   1.3为什么要做接口测试二、接口测试的基础   2.1接口测试介绍   2.2接口测试的实现方式三、接口返回数据和JSON详解四、接口测试协议详解总结前言一、......