JSP页面中的pageEncoding和contentType两种属性的区别

JSP页面中的pageEncoding和contentType两种属性 - 51CTO_COM - 注解 JSP页面中的pageEncoding和contentType两种属性的区别与联系。 立即下载

pageEncoding是jsp文件本身的编码 

contentType的charset是指服务器发送给客户端时的内容的编码 

 

 

一. JSP要经过2次的“编码”,三个阶段: 

 

1. 第一阶段用pageEncoding属性

jsp编译成.java,它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.java),如果pageEncoding设定错了,或没有设定,出来的就是中文乱码。   

 

2. 第二阶段用utf-8至utf-8

由JAVAC的JAVA源码至java byteCode(字节码文件)的编译,不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8编码的java字节码文件。 

JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 编码的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。 

 

3. 第三阶段会用contentType属性

是Tomcat(或其的application container)载入和执行“第二阶段”得来的JAVA二进制码,输出的结果,也就是在客户端见到的,这时隐藏在阶段一和阶段二的参数contentType就发挥了功效 

 

 

二.contentType 和pageEncoding属性的設定: 

1. pageEncoding 和contentType的默认都是 ISO8859-1.设定了其中一个, 另一个就跟着一样了. 

2. 但这不是绝对的, pageEncoding和contentType都可以显示设定。 (例pageEncoding=GB2312 不等于 contentType=utf-8)。 

 

 

三.jsp文件不同于.java

.java在被编译器读入的时候默认采用的是操作系统所设定的local所对应的编码,比如中国大陆就是GBK,台湾就是BIG5或者MS950。而一般我们不管是在记事本还是在ultraEdit中写代码,如果没有经过特别转码的话,写出来的都是本地编码格式的内容。所以编译器采用的方法刚好可以让虚拟机得到正确的资料。 

 

但jsp文件不同,它没有这个默认转码过程,但是指定了pageEncoding属性就可以实现正确转码了。 

  举个例子: 

<%@ page contentType="text/html;charset=utf-8" %>

  大都会打印出乱码,因为输入的“你好”是gbk的,但是服务器是否正确抓到“你好”不得而知。 

  但是如果更改为 

<%@ page contentType="text/html;charset=utf-8" pageEncoding="GBK"%>

  这样就服务器一定会是正确抓到“你好”了。

 

======================================================================

在JSP标准的语法中,如果pageEncoding属性存在,那么JSP页面的字符编码方式就由pageEncoding决定,否则就由 contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1。

======================================================================

我们新建JSP页面时,第一行语句:<%@ page contentType="text/html;charset=GB2312"%>的作用是:

设置文档类型, text/html代表是文本类型的html文件;charset=GB2312  字符集编码是GB2312。

然而有些页面第一行语句:

<%@ page contentType="text/html;charset=GB2312" pageEncoding="GB2312"%>
“charset”
与“pageEncoding”到底有什么区别?

charset:
字符编码
pageEncoding:
页面编码

pageEncoding是设置的JSP页面源代码的字符编码格式,如果该项的值是utf-8,则JSP源代码里不能写汉字了,如果你用的是eclipse等工具的话,保存时他会提示有一个错误,改成gbk就没事了,就是这个道理

charset是请求服务器以后返回过来的内容的字符编码,即使pageEncoding设置了gbk,保存,运行程序,查看页面时会发现刚才写的汉字不能正常显示,把charset改成gbk,正常。

 

 

基于Qt与PaddleOCR的跨平台OCR工具开发实战 本文详细介绍了基于Qt与PaddleOCR开发跨平台OCR工具的实战经验。通过Qt的跨平台特性和PaddleOCR的高效识别能力,开发者可以快速构建支持Windows、Linux和macOS的OCR工具。文章涵盖了环境配置、核心功能实现、性能优化及打包发布等关键环节,特别针对中文识别、内存管理和多线程处理等常见问题提供了解决方案。 阅读详情

相关推荐

西门子RS485自由口通信Modbus RTU 通信协议

部分西门子的RS485模块不能使用西门子自带的Modbus RTU通信指令,需要通过自己拼接、发送、接收和解析报文完成Modbus RTU通信。通过多次尝试完成该功能: #R_TRIG_Instance(CLK := #触发, Q => #触发上升沿); IF #触发上升沿 THEN // 触发后先将读取完成复位 #读写完成 := 0; END_IF; CASE #功能码 OF 1: // 线圈状态读取 ; 2:

qq_20792765的博客 1万+

java web 开发——第二章jsp语法

本章主要内容为JSP页面的基本结构、声明变量和定义方法、Java程序片、Java表达式、JSP指令标记、JSP动作标记等小节。在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面。%> 之间声明的变量在整个JSP页面内都有效,与其书写的位置无关。%> 之间声明变量和定义方法,习惯上放在JSP页面指令之后,之前。%>之间定义方法,可在Java程序片中调用该方法。2.7.1 include动作标记。2.7.1 include动作标记。2.7.2 param动作标记。

Estheryjl的博客 375

鸿蒙OpenHarmony南向开发 轻量系统芯片移植指南(一)

OpenHarmony系统采用"系统>子系统>部件"层级架构,支持功能模块化裁剪。本文介绍了关键子系统及移植方法:1)启动恢复子系统负责内核到应用间的进程初始化,需配置启动入口标识及链接脚本;2)文件子系统提供基础文件操作接口,需适配HAL层文件读写功能,可通过Flash模拟、轻量文件系统或厂商自有方案实现。移植过程需修改config.json配置,添加对应组件定义及功能实现。系统采用模块化设计,开发者可根据实际需求灵活配置所需子系统功能。

yx525623的博客 1131

JSP指令

JSP指令 JSP 指令的作用是为当前页面做一些基本的属性设置,为当前的页面的运行提供基本的环境。 在JSP中包含三类指令: page,页面指令 include,包含指令 taglib,标签库指令 这些指令的使用的语法格式均为如下形式: <%@ 指令名称 属性名=属性值 ... %> page指令 page指令用于设置当前JSP页面的相关信息, 一个 JSP中可以包含多个 page 指令,有以下几个常用的属性: pageEncoding pageEncoding属性用于设置当前JSP页面

陌影的博客 592

从零抓包分析AVDTP:用Wireshark解密蓝牙音频传输全流程

本文详细介绍了如何使用Wireshark抓包工具分析AVDTP协议,解密蓝牙音频传输的全流程。从实验环境搭建到信令交互解析,再到媒体流传输深度分析,逐步揭示蓝牙音频传输的技术本质,帮助开发者深入理解AVDTP协议的工作机制。

sun99的博客 204

Obsidian+llama3:终于搭建了自己的知识库

Obsidian 的 Smart Connections,超出了我原本的预期,于是结合新模型非常方便地搭建了我的个人知识库。

谢彦的技术博客 3712

contentType和pageEncoding属性的区别

前言:     在jsp中,使用page指令标识的话,contentType和pageEncoding属性经常同时使用,那么这两个属性有什么区别呢?     <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>区别:     pageEncoding属性:作用是指定jsp

LittleFlown的博客 900

⭐️白嫖的阿里云认证⭐️ 【真题&参考答案】:大模型Clouder认证:利用大模型提升内容生产能力

【摘要】真题「大模型Clouder认证:利用大模型提升内容生产能力」

davidkorhenn的博客 1925

jsp charset pageEncoding区别,中文乱码解决

转载自 软件钢琴师最终编辑 铁书来也JSP指令标签中这句有什么用途? 关于JSP页面中的pageEncoding和contentType两种属性的区别:  pageEncoding是jsp文件本身的编码  contentType的charset是指服务器发送给客户端时的内容编码

顾传龙 922

ARIMA模型的R实现

1.模型简介 ARIMA模型,全称差分自回归移动平均模型。可以看作是差分运算和ARMA模型的结合。主要是针对具有线性趋势的非平稳的时间序列,来进行建模预测。 ARIMA模型的形式如下: Φ(B)∇

heirenmin的博客 1万+

飞书接入OpenClaw:从零到一的保姆级图文教程

本文主要介绍了飞书接入OpenClaw:从零到一的保姆级图文教程,希望能对学习使用OpenClaw 的同学们有所帮助。 文章目录 1. 背景 2. 解决方案 2.1 步骤一:安装插件 2.2 步骤二:创建机器人应用 2.3 步骤三:测试 3. 注意事项

weixin_43178406的博客 13万+

java pageencoding_jsp pageEncoding属性详解

Java pageEncoding原理详解首先看下文章解释:意思是jsp文件本身的编码巨大的疑问:这里有一个很大的问题,既然你都已经从jsp中读到了这条属性,证明内容读取正确,那你还需要知道这条属性所指的编码是什么干嘛?下面务必来看看Jsp的编译原理第一阶段是jsp编译成java它会根据pageEncoding的设定读取jsp,结果是由指定的编码方案翻译成统一的UTF-8 JAVA源码(即.jav...

weixin_32535389的博客 331

Megatron-LM从头训练大语言模型:并行策略图示【Tensor并行、Pipeline并行、Data并行、Sequence并行、virtual_pipeline并行、Context并行】

节点包含的层每GPU的参数内存每GPU的激活内存节点0Stage 0层1-1212层参数/2 (TP切分)8k序列激活 (CP切分)节点1Stage 1层13-2412层参数/2 (TP切分)8k序列激活 (CP切分)节点2Stage 2层25-3612层参数/2 (TP切分)8k序列激活 (CP切分)节点3Stage 3层37-4812层参数/2 (TP切分)8k序列激活 (CP切分)负载均衡:每个节点处理相同数量的层(12层)内存优化。

u013250861的博客 285

关于JSP页面中的pageEncoding和contentType两种属性的区别

这里引用论坛里朋友hafsky 的回答帖子,感觉总结的不错和大家共享一下! 关于JSP页面中的pageEncoding和contentType两种属性的区别: pageEncoding是jsp文件本身的编码 contentType的charset是指服务器发送给客户端时的内容编码 JSP要经过两次的“编码”,第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三

jercy的专栏 1889

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

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

关于在jsp页面中pageEncoding和contentType两种属性的区别

pageEncoding 在JSP标准的语法中,如果pageEncoding属性存在,那么JSP页面的字符编码方式就由pageEncoding决定,否则就由contentType属性中的charset决定,如果charset也不存在,JSP页面的字符编码方式就采用默认的ISO-8859-1。 ContentType ContentType属性指定了MIME类型和JSP

tangpeng2018的博客 806

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: Form表单的一些Type类型
下一篇: <meta http-equiv>的作用
V再见诺丁山
博客等级 码龄16年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值