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

相关文章

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

MySQL中的两阶段提交详解(2PC)

《MySQL中的两阶段提交详解(2PC)》:本文主要介绍MySQL中的两阶段提交(2PC),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录引言两阶段提交过程sync_binlog配置innodb_flush_log_at_trx_commit配置总结引言在Inn

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

VSCode中C/C++编码乱码问题的两种解决方法

《VSCode中C/C++编码乱码问题的两种解决方法》在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码,这种编码不一致会导致在VSC... 目录问题方法一:通过 Code Runner 插件调整编码配置步骤方法二:在 PowerShell

Git如何修改已提交人的用户名和邮箱

《Git如何修改已提交人的用户名和邮箱》文章介绍了如何修改Git已提交人的用户名和邮箱,包括注意事项和具体步骤,确保操作正确无误... 目录git修改已提交人的用户名和邮箱前言第一步第二步总结git修改已提交人的用户名和邮箱前言需注意以下两点内容:需要在顶层目录下(php就是 .git 文件夹所在的目