当前位置: 首页 > 编程日记 > 正文

关于jsp页面中的pageEncoding和contentType以及html中的meta标签中字符集的设置(转)...

转载:《关于JSP页面中的pageEncoding和contentType两种属性的区别》

  pageEncoding是jsp文件本身的编码

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

  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就发挥了功效

  contentType的設定.

  pageEncoding 和contentType的预设都是 ISO8859-1. 而随便设定了其中一个, 另一个就跟着一样了(TOMCAT4.1.27是如此). 但这不是绝对的, 这要看各自JSPC的处理方式. 而pageEncoding不等于contentType, 更有利亚洲区的文字 CJKV系JSP网页的开发和展示, (例pageEncoding=GB2312 不等于 contentType=utf-8)。其他的语言也对应不同的charset,比如日文的字符集是“iso-2022-jp ”,韩文的是“ks_c_5601”。Content-Type的Content还可以是:text/xml等文档类型;Charset选项:ISO-8859-1(英文)、BIG5、UTF-8、SHIFT-Jis、Euc、Koi8-2、us-ascii, x-mac-roman, iso-8859-2, x-mac-ce, iso-2022-jp, x-sjis, x-euc-jp,euc-kr, iso-2022-kr, gb2312, gb_2312-80, x-euc-tw,x-cns11643-1,x-cns11643-2等字符集;Content-Language的Content还可以是:EN、FR等语言代码。

    ContentType属性指定了MIME类型和JSP页面回应时的字符编码方式。MIME类型的默认值是“text/html”; 字符编码方式的默认值是“ISO-8859-1”. MIME类型和字符编码方式由分号隔开

    pageEncoding的内容只是用于jsp输出时的编码,不会作为header发出去的。     pageEncoding   是通知web server jsp的编码。

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

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

  举个例子:

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

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

  但是如果更改为

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

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

为了避免不必要的错误,在书写是应尽量保证这三处有关字符集的设置一致

转载于:https://www.cnblogs.com/cczhoufeng/archive/2013/02/19/2916495.html

相关文章:

JNI调用实例

1. 环境 Windows7-64Bit VS2010-32Bit JDK1.8-64Bit 2. 步骤 2.1 创建NativePrint类 public class NativePrint {public native void nativePrint(); } 其中包含一个native方法&#xff0c;这个native方法是通过C实现的&#xff0c;C的实现代码最终是生成dll文件&#xff0c;然…

【青少年编程】【三级】加法出题机

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

Python培训教程分享:Python异常机制

​ 在学习Python技术的时候&#xff0c;我们经常会遇到一些异常&#xff0c;例如导致程序在运行过程中出现的中断或退出&#xff0c;我们都称之为异常&#xff0c;大多数的异常都不会被程序处理&#xff0c;而是以错误信息的形式展现出来。本期Python培训教程就算教大家关于Pyt…

SharePoint【调试,诊错系列】-- 一种调试Sharepoint2010 Solution的快捷方式

Visual Studio 2010 支持通过F5来调试Sharepoint Solutions&#xff0c;但这种方法却很难用在调试workflows, event recievers, custom controls上&#xff0c;我们往往通过 "Attach to process..."来调试这些模块&#xff0c;关于如何Attach到正确的Process&#xf…

通往SQL Server复制的阶梯:一级- SQL服务器复制介绍

链接&#xff1a;http://www.sqlservercentral.com/articles/StairwaySeries/72274/ 文章&#xff1a;Stairway to SQL Server Replication: Level 1 - Introduction to SQL Server Replication 通往SQL Server复制的阶梯:一级- SQL服务器复制介绍 By Sebastian Meine, 2012/12…

【青少年编程】【三级】青蛙捕虫

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…

UI培训教程分享:UI设计的分类有哪些?

本期为大家介绍的UI培训教程是关于UI设计分类这块的&#xff0c;在UI设计中&#xff0c;我们常应用到的终端设备可大致分为三类&#xff0c;分别为移动端UI设计、PC端UI设计、其他终端UI设计。 UI培训教程分享&#xff1a;UI设计的分类有哪些? 1. 移动端UI设计 移动端一般指移…

slider(滑动条)控件模版,样式--用图片定义控件模版

初接触wpf&#xff0c;想自己用图片做一个个性slider滑块控件&#xff0c;网上找了很久无果。后来一些机缘巧合看别人源码的时候找到了类似的&#xff0c;然后自己再查了一下msdn&#xff0c;大概弄懂了。 我们先来看看slider控件组成元素。 Slider控件组成&#xff1a; 用图片…

360浏览器调用selenium

2019独角兽企业重金招聘Python工程师标准>>> 360浏览器调用selenium package com.demo;import java.io.File; import java.io.IOException;import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver;…

【组队学习】【28期】R语言数据科学

R语言数据科学 论坛版块&#xff1a; http://datawhale.club/c/team-learning/36-category/36 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/RLanguage 学习目标 向零基础的同学介绍如何利用R语言进行数据分析。通过学习&…

零基础参加Java培训班合适吗

零基础参加Java培训班合适吗?对于这个问题&#xff0c;首先答案是肯定的&#xff0c;零基础学习java技术最靠谱最快速的方法就是报java培训班进行学习了&#xff0c;来看看下面的详细介绍就知道了。 零基础参加Java培训班合适吗? 能够想到参加Java培训班学习的同学一般分为三…

用VS(c#)创建、调试windows service以及部署卸载

同事问到windows service的东东&#xff0c;现在整理一下&#xff0c;用c#如何创建一个windows service&#xff0c;以及如何调试、部署、卸载。 一、创建windows service 1. 打开VS2008&#xff0c;新建一个Project, Project类型选择Visual C#-Windows&#xff0c;在Templates…

【组队学习】【28期】基于Python的会员数据化运营

基于Python的会员数据化运营 论坛版块&#xff1a; http://datawhale.club/c/team-learning/37-category/37 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-data-mining/tree/master/MemberOperations 学习目标 数据化运营是业务知识与编程技能…

异步系统接口调用流程图

2019独角兽企业重金招聘Python工程师标准>>> 异步系统接口调用流程图 博客分类&#xff1a; java ................................... 转载于:https://my.oschina.net/xiaominmin/blog/1597725

java培训教程分享:Java中用户如何自定义异常?

我们在学习java技术的时候应该有了解过&#xff0c;在java中是定义了很多的异常类的&#xff0c;虽然这些大量异常类可以帮助我们描述编程时出现的大部分异常情况&#xff0c;但是在程序开发中有时可能需要描述程序中特有的异常情况&#xff0c;例如在设计divide()方法时不允许…

【组队学习】【28期】基于transformers的自然语言处理(NLP)入门

基于transformers的自然语言处理(NLP)入门 论坛版块&#xff1a; http://datawhale.club/c/team-learning/39-category/39 开源内容&#xff1a; https://github.com/datawhalechina/Learn-NLP-with-Transformers 学习目标 自然语言处理&#xff08;Natural Language Pro…

java io在文件结尾持续添加内容

[代码] java io在文件结尾持续添加内容 public static void write(String path, String content) {try {File f new File(path);BufferedWriter output new BufferedWriter(new FileWriter(f,true));output http://www.szhaoexport.com/linked/20130222.do; .write(content &…

Docker1.12让容器使用和宿主机同一个网段

2019独角兽企业重金招聘Python工程师标准>>> Docker1.12让容器使用和宿主机同一个网段 博客分类&#xff1a; docker 由于开发的一些特殊需求&#xff0c;需要将容器部署在与宿主机同一个网段中&#xff0c;部署步骤如下&#xff1a;步骤一&#xff1a;创建网络$ …

java培训分享:java培训架构师学习线路图

本期java教程分享主要是讲解关于java培训架构师方面的内容&#xff0c;主要针对java架构师的学习线路图进行一个知识点的概括&#xff0c;下面来看看学习java架构师都需要了解哪些内容吧。 java培训分享&#xff1a;java培训架构师学习线路图 1、常见模式与工具 学习Java技术体…

设计中涉及到的dip、dp、px、sp等单位说明

在进行UI设计中常会遇到各种数值单位&#xff0c;开始使用时也常搞混&#xff0c;于是搜集了单位解说的文章与大家一同分享 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关&#xff0c;一般我们为了支持WVGA、HVGA和QVGA 推荐使用…

【组队学习】【28期】Datawhale组队学习内容介绍

第28期 Datawhale 组队学习活动马上就要开始啦&#xff01; 本次组队学习的内容为&#xff1a; 吃瓜教程——西瓜书南瓜书李宏毅机器学习动手学数据分析集成学习SQL编程语言R语言数据科学基于Python的会员数据化运营数据采集从入门到精通基于transformers的自然语言处理(NLP)入…

多线程读一个全局变量要不要加锁?还是说只是当修改全局变量的时候才要加锁?...

如果所有线程都只读取该变量的话不必加锁&#xff0c;因为仅读取不存在破坏数据的风险&#xff0c;如果有线程写该变量的话不管读取还是写入都要加锁的。

java培训教程分享:Java编写软件代码自动提示功能

本期的java培训教程分享主要是介绍的java编写软件代码的一个自动提示功能&#xff0c;很多零基础和初学java的同学们对这一块还不是很了解&#xff0c;Eclipse for android 实现代码自动提示智能提示功能&#xff0c;以下是介绍 Eclipse for android。 java培训教程分享&#x…

iOS WebviewJavascriptBridge 源码研读笔记

这两天接近元旦&#xff0c;事情稍微少些&#xff0c;有些时间&#xff0c;索性写点什么&#xff0c;就从最擅长的iOS混合开发写起了&#xff0c;由于iOS开发经验不到四年吧&#xff0c;期间还搞了一年半的前端&#xff0c;有些知识可能还是积累的不足&#xff0c;能力不足&…

Debian上网的问题小结

装完系统或装系统中很重要的部分就是配置网络的问题了&#xff0c;记得刚安装Debian的时候还不知道dhclient eth0真是杯具。 关于怎么设置识别网卡su->输入root密码->nano /etc/network/interface然后分情况&#xff0c;如果你是有线的且只有一个网卡&#xff0c;就叫eth…

【组队学习】【28期】青少年编程(Scratch 一级)

青少年编程&#xff08;Scratch 一级&#xff09; 论坛版块&#xff1a; http://datawhale.club/c/team-learning/34-category/34 开源内容&#xff1a; https://github.com/datawhalechina/team-learning-program/tree/master/Scratch 学习目标 全国青少年软件编程等级考…

java培训教程分享:Java中怎样将数据对象序列化和反序列化?

本期为大家介绍的java培训教程是关于“Java中怎样将数据对象序列化和反序列化?”的内容&#xff0c;相信大家都知道&#xff0c;程序在运行过程中&#xff0c;可能需要将一些数据永久地保存到磁盘上&#xff0c;而数据在Java中都是保存在对象当中的。那么我们要怎样将对象中的…

C#实现的几种委托

//普通委托DeleteShow ds new DeleteShow(ShowName);Console.WriteLine("----------------------");Console.WriteLine("普通委托----请输入用户名:");string Name Console.ReadLine();Console.WriteLine(ds(Name));Console.WriteLine("-----------…

AFN框架使用整理

1.AFN框架基本使用 1 AFN内部结构 AFN结构体 NSURLConnection(iOS9.0废弃了) AFURLConnectionOperationAFHTTPRequestOperationAFHTTPRequestOperationManager(封装了常用的 HTTP 方法) 属性 baseURL :AFN建议开发者针对 AFHTTPRequestOperationManager 自定义个一个单例子类&a…

【青少年编程】【一级】小镇一日游

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料&#xff08;视频、代码、文档&…