pageEncoding和contentType编码作用和区别详解

pageEncoding和contentType都用于定义字符编码,两者有什么区别?相信不少初学者都会有疑惑,今天中国网页设计给大家详细解读两者的区别,pageEncoding和contentType都在什么时候起作用。

pageEncoding和contentType语法格式

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

<%@ page  pageEncoding=”GBK”%>

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

pageEncoding和contentType区别

pageEncoding是jsp文件本身的编码

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

pageEncoding和contentType执行过程

JSP要经过两次的“编码”:

第一阶段会用pageEncoding,第二阶段会用utf-8至utf-8,第三阶段就是由Tomcat出来的网页, 用的是contentType。

第一阶段是jsp编译成java

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

第二阶段是由JAVAC的JAVA源码至java byteCode的编译

不论JSP编写时候用的是什么编码方案,经过这个阶段的结果全部是UTF-8的encoding的java源码。
JAVAC用UTF-8的encoding读取java源码,编译成UTF-8 encoding的二进制码(即.class),这是JVM对常数字串在二进制码(java encoding)内表达的规范。

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

pageEncoding 和contentType的预设都是 ISO8859-1.

pageEncoding和contentType使用举例

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

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

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

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

125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/11157.html

(0)
江山如画的头像江山如画管理团队
上一篇 2022年11月23日 下午6:11
快速排序基本思想、实例讲解及Java实现代码
下一篇 2022年12月1日 上午11:03

99%的人还看了以下文章

  • 通用数据库操作类及员工信息查询实例

    package com.common; import java.sql.*; public class DataBaseConn { public Connection conn = null; public void createConn(){ String url = “jdbc:mysql://localhost:3306/employeeDb”; S…

    2019年11月27日
    20.4K0
  • python 字典使用实例:创建通信录并完成修改、查找操作

    练习目的:巩固python 字典的创建,合并,修改及使用。 学了python字典后,同学们想创建一个自己的通信录,小明是这么做的: 先根据三位舍友的联系方式创建一个字典dicTXL 然后将隔壁舍长已创建好的字典dicOther合并进自己的通信录 合并之后,小明又打算给通信录增加一列“微信号”,为此他询问了相关同学的微信号并存储在了字典dicWX中,然后合并进…

    2020年1月22日
    21.5K0
  • 5分钟快速入门AJAX

    什么是AJAX? 第一步:如何发出一个HTTP请求第二步:处理服务器的响应第三步:一个简单的例子第四步:与XML响应协同工作 什么是AJAX AJAX是一个新的合成术语,隐含了两个已经存在多年的JavaScript特性,但是直到最近,随着一些诸如Gmail、Google Suggest以及Google Maps的轰动,才被许多网络开发者所注意到。 我们所讨论…

    2020年4月4日
    8.5K0
  • 国内github网站打不开的解决方法(验证100%解决)

    国内github网站打不开的解决方法(验证100%解决)国内github网站打不开的解决方法(验证100%解决)国内github网站打不开的解决方法(验证100%解决)国内github网站打不开的解决方法(验证100%解决)

    最近国内访问github.com经常打不开,无法访问。 github网站打不开的解决方法 1.打开网站http://tool.chinaz.com/dns/ ,在A类型的查询中输入 github.com,找出最快的IP地址。 2.修改hosts文件。 在hosts文件中添加: # localhost name resolution is handled wi…

    2022年2月1日 编程开发
    31.8K0
  • Java常见面试题200+,学习、面试必备

    本套Java面试题,选取了企业面试最常问到的问题,可以做为Java工程师的面试宝典,也可以做为想要不断完善和扩充自己 java 技术的学习者。 主要包含: Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Myb…

    2019年8月29日
    10.9K0
  • Vim编辑器常用命令大全

    编辑和保存文件 vim filename为编辑一个文件,若此文件不存在,则Vim会以filename为名创建这个文件。 启动Vim时自动处于命令模式,按I键可以进入插入模式,这个命令用于在当前光标所在处插入字符。 保存和退出 命令 操作 :w 保存文件 :w filename 另存为filename :q 退出Vim :q! 强制退出Vim,用于放弃保存修改…

    2022年9月22日
    2.2K0

发表回复

登录后才能评论