tomcat6 中get 和 post 表单提交时编码的差别

2024-02-18 22:38

本文主要是介绍tomcat6 中get 和 post 表单提交时编码的差别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

相信搞java的朋友都遇到过乱码问题,一般几乎都可以通过修改页面编码,tomcat编码,加过滤器等方式搞定,但为什么

 

要这么做呢?不一定每个人都明白。

 

最近弄jsp,再次遇到乱码问题,所以查了些资料,在这里记录下,以备以后可以查阅。

 

我现在用的tomcat版本是apache-tomcat-6.0.29,tomcat的配置都是默认的。

 

当我通过Jsp提交数据到后台的时候,插入到数据库,发现中文是乱码,debug发现还没到数据库就已经是乱码了,这说明

 

编码的设置有问题。

 

检查了下我的jsp页面,编码只设pageEncoding="UTF-8" ,contentType没有设置,表单的提交方式是get,把表单的

 

提交方式改为post试了下,发现post方式居然提交中文居然不会乱码。汗一个,难道post和get使用不同的编码提交到服

 

务器?另外还试了一种方式,根据网上的说法,把tomcat_home/conf/目录下的server.xml中Connector节点中增加

 

URIEncoding="utf-8" ,如果用get方式提交表单,中文也不会乱码。

 

从上面的小实验基本可以猜出,当页面用get方式提交时,用的编码是URIEncoding的值,如果不设这个值的话,默认值

 

不是utf-8,后来查了下tomcat的wiki,URIEncoding的默认编码是ISO-8859-1,所以get方式提

 

交中文会乱码。

 

根据tomcat的wiki可以发现:

1.get方式是通过url来传数据的,默认是使用ISO-8859-1的方式来编码数据。要改变get的默认编码方式可以通过修改

 

Connector节点中的URIEncoding的值。

 

2.post传数据时,使用的编码方式和post是不同的。post方式依据的是什么编码来提交数据呢?还有待查资料。

参考了apache的资料: http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
补充: 刚测试了下,可以排除post的编码和

<meta http-equiv="content-type" content="text/html;charset=xxx"> 中 chartset有关。

我刚用的charset=gb2312,提交"春节"两个字,发现提交给后台的是:name=%E6%98%A5%E8%8A%82 ,  

这对应的是utf-8编,因为"春节"的gb2312对应的值是:%b4%ba%bd%da 

这篇关于tomcat6 中get 和 post 表单提交时编码的差别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/722678

相关文章

Python动态处理文件编码的完整指南

《Python动态处理文件编码的完整指南》在Python文件处理的高级应用中,我们经常会遇到需要动态处理文件编码的场景,本文将深入探讨Python中动态处理文件编码的技术,有需要的小伙伴可以了解下... 目录引言一、理解python的文件编码体系1.1 Python的IO层次结构1.2 编码问题的常见场景二

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java中字符编码问题的解决方法详解

《Java中字符编码问题的解决方法详解》在日常Java开发中,字符编码问题是一个非常常见却又特别容易踩坑的地方,这篇文章就带你一步一步看清楚字符编码的来龙去脉,并结合可运行的代码,看看如何在Java项... 目录前言背景:为什么会出现编码问题常见场景分析控制台输出乱码文件读写乱码数据库存取乱码解决方案统一使

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

Java 中编码与解码的具体实现方法

《Java中编码与解码的具体实现方法》在Java中,字符编码与解码是处理数据的重要组成部分,正确的编码和解码可以确保字符数据在存储、传输、读取时不会出现乱码,本文将详细介绍Java中字符编码与解码的... 目录Java 中编码与解码的实现详解1. 什么是字符编码与解码?1.1 字符编码(Encoding)1

解决Failed to get nested archive for entry BOOT-INF/lib/xxx.jar问题

《解决FailedtogetnestedarchiveforentryBOOT-INF/lib/xxx.jar问题》解决BOOT-INF/lib/xxx.jar替换异常需确保路径正确:解... 目录Failed to get nested archive for entry BOOT-INF/lib/xxx

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

SpringBoot+Redis防止接口重复提交问题

《SpringBoot+Redis防止接口重复提交问题》:本文主要介绍SpringBoot+Redis防止接口重复提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录前言实现思路代码示例测试总结前言在项目的使用使用过程中,经常会出现某些操作在短时间内频繁提交。例