JSP和Servlet设置编码

Servlet对Html表单数据的处理和乱码处理 这种乱码在不同的游览器有不同的效果,如果该浏览器与编码时用的字符集一样,则不会出现乱码。1、在Web目录下创建register.html文件,并使用action将表单提交至对应映射地址。码信息,跟账号率码信息做成宁符出生成响应,并返回给客户端。1.通过表单调用servlet,并传递 账号、密码信息。2、写一个.java文件——实体类(用于存储表单数据)2.servlet中取得用户输入的 账号密。4、输出一些对应的,然后点提交按钮。 阅读详情

JSP和Servlet设置编码

在JSP和Servlet中有几个地方都可以设置编码,各个编码的功能也不一样,本文将对各个编码做一个小结。
各种编码一览

A. JSP/Servlet都有的编码设置

1. request.setCharacterEncoding("UTF-8")

2. response.setCharacterEncoding("UTF-8")

3. response.setContentType("text/html; charset=UTF-8");

4. response.setHeader("Content-Type", "text/html; charset=UTF-8");

B. JSP专有的编码设置

1. <%@ page pageEncoding="UTF-8" %>

2. <%@ page contentType="text/html; charset=UTF-8" %>

C. HTML页面中的编码设置

1. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

※以下内容用到本部分编码设置时,将使用A1, A3, B2的方式

--------------------------------------------------------------------------------

浏览器如何确定编码格式来显示页面


web服务器在接收到浏览器的请求信息后,经过处理,会发送一个应答消息给浏览器。应答消息包含一般三个部分:状态行,应答首部,应答主体。下面是一个示例:

HTTP/1.0 200 OK
Last-Modified: Mon: 20 Dec 2001 23:26:42 GET
Date: Tue 11 Jan 2002 20:52:40 GMT
Status: 200
Content-Type: text/html; charset=UTF-8
Servlet-Engine: Tomcat Web Server/4.0.1
Content-Length: 59

<html>
  <body>
    <h1>Hello World!</h1>
  </body>
</html>
其中,第一行是状态行,最后的一部分是应答主体,而中间的部分就是应答首部了。而应答主体部分的Content-Type中的charset就指定了浏览器应该采用什么编码格式来显示页面。如果没有指定charset的话,浏览器会根据C1(meta中的charset)来显示页面;如果C1也没有的话,就采用本地默认的编码格式显示页面(应该与客户端的操作系统有关)

★浏览器显示页面所用的格式可以通过菜单 -> 查看 -> 编码来查看具体是哪种编码格式
--------------------------------------------------------------------------------

web服务器如何决定编码

从上面可以知道,服务器在发送给客户端的应答主体中一般会包含charset。而这个charset的值有几个来源,我们从高优先级到低优先级排列。

注:下面的结论是采用Tomcat 5.5确认的结论,不一定全部适用于其他服务器。
1. A2, A3, A4

如果你的JSP或者Servlet中包含以上3中类型的代码,那么charset就是它们。如果有多条语句设置,那么charset就是最后一条所设置的值。

2. B2

B2的代码在编译成class文件时会自动转换为A3,但是是位于所有代码的最前面部分。所以,如果JSP中包含A2, A3, A4的代码,B2就不会再起作用,如果没有的话,那么值就是B2所设定的charset的值。

3. B1

如果1和2都不存在的话,B1的值就会被采用。

4. web服务器默认值

一般是ISO-8859-1

 

 


--------------------------------------------------------------------------------

 

JSP的编译过程

JSP在被访问时,需要编译成Java的bytecode才会被执行,而这个编译过程是分两步进行的。第一步是:JSP -> Java文件的转换过程,第二步是Java -> class文件的编译过程。

其中,第一步的JSP -> Java文件的转换过程,就会使用B1和B2的两部分内容。web服务器会根据B1的pageEncoding的设置来读取jsp文件,并且把它转换为以 UTF-8格式编码的java文件。如果JSP中有汉字,而pageEncoding设置的是ISO-8859-1,或者没有设置的话,出来的java文件中就会有乱码。至于B2呢,web服务器会把它转换为A3一样的代码,并且把它放在代码的最前面部分。

而第二步就是普通的Java文件的编译过程,javac使用UTF-8格式读取java文件,再编译成UTF-8格式的class文件。

★用过MyEclipse写JSP的可能就知道,如果你的pageEncoding设置的值与JSP文件本身的编码格式不一致的话,MyEclipse会报错,并且无法保存成功。它这样做就可以保证你写在JSP中的文字一定能被正确解析,因为你肯定敲一堆乱码出来给自己看的。

 

 


--------------------------------------------------------------------------------


其他相关知识

★上面的内容基本上都是关于页面输出时的编码,而没有输入时的编码说明,因为不是本文的重点,所以只在这里稍微补充以下。页面输入的编码主要是指用户在页面上输入一些内容,然后发送到服务器端,服务器端要采用某种编码方式来解码用户的请求。这个部分根据用户请求的类型(POST/GET)不同有不同的处理方式。

对于POST方式来说,因为客户端请求前一张页面时,就已经得到Web服务器设置的编码格式,此时用户以POST方式发送请求时,所有的数据将自动采用当前页面设置的编码格式编码。那么,服务器端只要用同样的编码格式解码就可以了。如,使用A1是可行的一种方法。

对于GET方式来说,客户端在请求时是没有使用编码格式的,Web服务器将采用默认的编码格式解码。如Tomcat 5.0中默认采用ISO-8859-1编码格式。如果需要配置成其他格式,需要修改Tomcat的配置文件中的Connector tag中的useBodyEncodingForURI或者URIEncoding。

不过在J2EE系统中,类似于A1这样的代码一般不会写在JSP/Servlet中,而是使用一个Filter类来实现。

 


★我们可以写java代码访问某JSP或者Servlet来查看具体的应答消息内容。

url = new URL("http://localhost:8080/Encoding/page/test.jsp");
URLConnection urlConn = url.openConnection();
System.out.println(urlConn.getHeaderFields());
输出地结果就是类似于下面这样的信息:

{Content-Length=[265], Set-Cookie=[JSESSIONID=367DB3A663B8F6B0D84C6EF3FDB1BF43; Path=/Encoding], null=[HTTP/1.1 200 OK], Date=[Sat, 06 Mar 2010 09:01:27 GMT], Server=[Apache-Coyote/1.1], Content-Type=[text/html;charset=UTF-8]}

--------------------------------------------------------------------------------

参考资料

1. http://hi.baidu.com/evenbill/blog/item/46b90f62c955dd680d33fa48.html

2. http://wasiker.javaeye.com/blog/255062

3. http://blog.youkuaiyun.com/Jermaine/archive/2009/06/09/4255809.aspx

4. http://www.ibm.com/developerworks/cn/web/wa-lo-utf8/index.html 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/superbeck/archive/2010/03/05/5347815.aspx

linux系统下XDMA驱动的安装与测试问题总结 先看两个常见的问题。一个是驱动安装问题,一个是驱动测试错误;error 512 能识别PCIE的设备,但是The kernel modle installed correctly, but no devices were recognized. 阅读详情

相关推荐

基于AI Agent的数据治理实战:从架构设计到企业级落地

数据治理是确保企业数据质量、一致性与安全性的核心实践,其核心原理在于通过规范、流程与技术工具对数据进行全生命周期管理。传统人工治理模式效率低下且难以规模化,而大语言模型(LLM)与智能体(Agent)技术的发展,为数据治理的自动化与智能化带来了突破。通过将自然语言理解、任务规划与工具调用能力相结合,AI Agent能够将治理规则“代码化”与“智能化”,实现从被动响应到主动发现的模式转变。在应用场景上,AI Agent可扮演智能数据专员角色,自动执行元数据问答、数据质量探查、口径对齐等任务,显著提升数据团队效

weixin_34008805的博客 418

Servlet设置编码,继承关系,生命周期

1.设置编码 tomcat8之前,设置编码∶  1 ) get请求方式:   get方式目前不需要设置编码(基于tomcat8 )   如果是get请求发送的中文数据,转码稍微有点麻烦( tomcat8之前) string fname = request.getParameter ( "fname" ); 1.将字符串打散成字节数组 byte[] bytes = fname.getBytes ("ISO-8859-1"); 2.将字节数组按照设定的编码重新组装成字符串 fname = new strin

weixin_43752912的博客 976

IntelliJ IDEA 中git使用说明书

IntelliJ IDEA 中git使用说明书

junyang2012的博客 5389

JSP/Servlet中的编码相关设置

在JSP和Servlet中有几个地方都可以设置编码,各个编码的功能也不一样,本文将对各个编码做一个小结。 各种编码一览A. JSP/Servlet都有的编码设置1. request.setCharacterEncoding("UTF-8")2. response.setCharacterEncoding("

superbeck的专栏 2万+

Zynq7000混合启动方案:QSPI Flash引导与eMMC ext4文件系统部署实战

本文详细介绍了Zynq7000平台的混合启动方案,结合QSPI Flash引导与eMMC ext4文件系统部署,解决嵌入式Linux系统启动可靠性与大容量存储需求。通过硬件连接配置、分区规划、Petalinux工程配置及实战部署步骤,帮助开发者高效实现系统优化,提升启动速度和文件系统性能。

weixin_29190169的博客 447

VLA算法总结对比——RT1 / RT2 / Pi0 / Octo/ RDT / OpenVLA

本文主要针最近比较经典的VLA算法进行对比总结,暂不涉及到代码细节和实验细节上的展开,仅仅是从大面上掌握下目前VLA的一些思路和方法。

weixin_44580210的博客 9492

Java基础(30)如何设置请求的编码以及响应内容的类型及编码

在Web应用开发中,正确设置请求的编码和响应的内容类型及编码是非常重要的,这关系到应用能否正确处理不同语言的文本,尤其是在处理多语言内容时尤为关键。

qq_43012298的博客 1349

英特尔® NUC迷你电脑实现无人值守自动开机配置指南

本文详细介绍了如何配置英特尔® NUC迷你电脑实现无人值守自动开机功能。从BIOS设置到操作系统级配置,涵盖硬件兼容性确认、电源恢复功能设置及常见问题解决,帮助用户轻松实现设备断电后自动恢复运行,适用于家庭服务器、企业终端等多种场景。

weixin_42638178的博客 472

servlet中文编码的设置

【代码】servlet中文编码的设置。

2401_82973450的博客 390

GMSL2 协议与技术 第一部分

默认情况下,自动的链路配置功能是使能的(AUTO_LINK = 1),这表示器件将试图锁定在single link模式,它将自动监测是否PHY-A或者PHY-B已经连接到了远端的器件,并且使能这个已连接的PHY,如果PHY-A和PHY-B同时连接到了远端的器件,它将使用首先探测到的连接进入single link 模式。另外,链路失锁同样也会发生在串行器或者解串器掉电的情况下,掉电的器件重新上电后,链路锁定会自动重新建立,而视频数据和控制通道的配置需要重新写入寄存器。

八哥望春的博客 4946

Android车载音频系统概览

官网有些部分的内容描述比较简单,对没有app、系统和底层开发经验,容易一眼扫过,没有留意到相关细节。 本节补充车载音频相关细节。

hwj的博客 785

Servlet和Jsp 设置编码格式

 JSP和Servlet设置编码 在JSP和Servlet中有几个地方都可以设置编码,各个编码的功能也不一样,本文将对各个编码做一个小结。 各种编码一览 A. JSP/Servlet都有的编码设置 1. request.setCharacterEncoding("UTF-8") 2. response.setCharacterEncoding("UTF-8") 3.

zhouzhiwengang的专栏 1239

基于Python的二手奢侈品电商平台商品保值率数据爬取与分析

本文旨在探讨如何利用Python网络爬虫技术获取二手奢侈品电商平台商品数据,并通过数据分析研究奢侈品的保值率特性。研究将使用最新的爬虫技术(包括Playwright、异步处理和数据清洗技术)来高效获取数据,并利用Pandas、Matplotlib等数据分析库进行深入的数据可视化分析。本文详细介绍了爬虫的设计思路、实现过程以及数据分析方法,为奢侈品投资和消费提供数据参考。关键词:Python爬虫、奢侈品保值率、数据分析、Playwright、异步处理。

2201_76125261的博客 511

servlet及jsp中的编码设置

 首先,说说JSP/Servlet中的几个编码的作用。 在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8"、contentType="text/html;charset=UTF -8"、request.setCharacterEncoding("UTF-8")和response.setCharacterEncoding ("UTF-8"),其中前两

xue_feitian的专栏 4744

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MyEclipse设置Servlet模板和JSP页面默认编码

MyEclipse Servlet模板设置: 目前我使用的MyEclipse有两个版本,一个是MyEclipse10,另一个是经典版MyEclipse6.6,两个版本设置方式大同小异。       6.6版:MyEclipse安装目录\myeclipse\eclipse\plugins\com.genuitec.eclipse.wizards_6.6.0.zmyeclipse6602008

转身遇见她 946

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

servlet以及jsp中编码设置

首先,说说JSP/Servlet中的几个编码的作用。  在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8"、contentType="text/html;charset=UTF -8"、request.setCharacterEncoding("UTF-8")和response.setCharacterEncoding ("UTF-8"),其

linhao 977

jsp/servlet页面编码格式的设置

本篇文章总结了jsp页面以及servlet中如何设置编码格式的方法,对于新手解决中文乱码是非常方便的哦

scarecrow_fly的博客 1494

JSP源码、改写Servlet为JSP、查看转译成为Servlet的文件、JSP字符编码设置

概述   在Servlet中编写HTML太麻烦了,应该使用JSP。JSP中可以直接编写HTML,使用指示、声明、脚本(scriptlet)等元素来堆砌各种功能,但JSP最后还是会被容器转译为Servlet源代码、自动编译为.class文件、载入.class文件,然后生成Servlet对象。  在第一次请求JSP时,容器会进行转译、编译与加载的操作,所以第一次请求JSP页面会慢很多。 ...

atu99602的博客 429

JSP/Servlet编码设置详解

转自于: [url]http://hi.baidu.com/evenbill/blog/item/46b90f62c955dd680d33fa48.html[/url] 在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8"、contentType="text/html;charset=UTF -8"、request.setChara...

yoyomier的博客 144

在JSP/Servlet 中编码格式的设置问题

在JSP/Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8"、contentType="text/html;charset=UTF -8"、request.setCharacterEncoding("UTF-8")和response.setCharact...

chuoting1713的博客 171

JSP 和 Servlet 中的几个编码设置

<br />首先,说说 JSP 和 Servlet 中的几个编码的作用. 在 JSP 和 Servlet 中主要有以下几个地方可以设置编码,pageEncoding="UTF-8", contentType="text/html;charset=UTF-8",request.setCharacterEncoding("UTF- 8")和 response.setCharacterEncoding("UTF-8"), 其中前两个只能用于 JSP 中, 而后两个可以用于 JSP 和 Servlet 中. <br

whrjxyygx的专栏 564

Servlet提交给jsp的编码设置

设置响应编码 response.setCharacterEncoding("UTF-8"); 通过一个头Content-Type告知客户端使用何种码表解码 response.setHeader("Content-Type", "text/html;charset=UTF-8"); 前面两步,合二为一 response.setContentType("text/html;charset=U...

靓仔的博客 246

web开发编码设置(jsp页面编码,servlet编码,连接数据库时编码设置)

以utf-8格式编码为例: 1.jsp页面编码设置 [b] [/b] 2.servlet编码设置: [b]request.setCharacterEncoding("UTF-8"); response.setContentType("text/html;charset=UTF-8");[/b] 3.数据库编码设置 (1)创建数据库时要...

zhener111的专栏 250
上一篇: Java反射详解
下一篇: tomcat编码乱码问题
SOMECT
博客等级 码龄15年 11粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值