感谢大佬:

https://www.cnblogs.com/yangguoe/p/8467672.html(编码发展史)

https://blog.csdn.net/seabiscuityj/article/details/80762658(Java文件编码解析)

https://www.xuebuyuan.com/3236710.html(Java文件编码解析)

https://blog.51cto.com/lavasoft/273608(Java文件编码的统一)

设置字符编码格式 一般是 utf-8 有很多编码格式的补充:在JSP页面中,有2种类方式可以设置JSP的编码格式一个是<%page

contentType charset=""%>,其中charset是指服务器发送给客户端时的内容编码 另外一个是<%page

pageEncoding=""%>,其中pageEncoding是jsp文件本身的编码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源码。

我的理解:

  • 在文件中明确写出说明的编码只是告诉某个程序采用什么方式去解码,所以实际文件存储采用的编码要和说明的编码一致才行。

  • Java采用Unicode码(两个字节表示一个字符,并且JVM仅采用unicode码),所以Java编译是会转换成存储编码为Unicode码(.class的编码具体来说是UTF-16编码)的字节码文件(.Class文件)。

  • pageEncodeing:告诉JSP服务器引擎将.jsp文件转换为.java源文件时需要的编码。

  • contentType charset:告诉服务器发送给客户端时的要用的内容编码。浏览器会优先采用服务器返回的Content-Type,如果没有就用页面上的Content-Type,还没有就识别文件编码,但浏览器识别编码有一定几率会失败的导致乱码。

  • 可以通过 javac -encoding 编码 XX.java来指定编码编译源文件,不指定的话,默认获取系统文件编码。

  • 注意编码数据的获取问题,特别是网络数据传输时,还有数据库数据传输时,注意解码编码转换。

大佬博文:

补充:https://blog.csdn.net/kong_lev/article/details/73071198

Java与网页JSP文件编码的小总结的更多相关文章

  1. JSP文件编码

    1. pageEncoding: <%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码 2. contentType: ...

  2. jsp文件中charset和pageEncoding的区别

    jsp文件中charset和pageEncoding的区别:  contentType的charset是指服务器发送给客户端时的内容编码,contentType里的charset=utf-8是指示页面 ...

  3. 格式化MyEclipse代码(java、jsp、js)行的长度@修改java代码字体@修改Properties文件编码方式

    每次用MyEclipse/Eclipse自带的快捷键Ctrl+shift+f格式化代码时,如果原来的一行代码大于80列,Eclipse就会自动换为多行.如果想格式化代码后不想让代码换行可以通过以下方式 ...

  4. java servlet上传文件并把文件内容显示在网页中

    servlet3.0(JDK1.6)自带的API即可实现本地文件的上传,Servlet3.0新增了Part接口,HttpServletRequest的getPart()方法取得Part实现对象.下面我 ...

  5. JSP设置文件编码

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  6. java中文乱码解决之道(七)-----JSP页面编码过程

    我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...

  7. 用java编网页的学习流程,我的一些小心得(初学java到高深运用)

    (1)java基础:首先得会写int,String,for循环,数组,**等等(熟练各种基础的关键字,各种java自带的排序,随即等等算法)什么是封装,继承,多态,然后private,public,p ...

  8. java基础80 JSP基础知识点(网页知识)

    1.jsp的引入 Servlet的作用:用java语言开发动态资源技术!!!    Jsp的作用:用java语言(+html语言)开发的动态资源技术!!!     Jsp就是servlet 问题:为什 ...

  9. JSP(3) - 9个JSP内置对象 - 小易Java笔记

    1.9个JSP内置对象 内置对象引用名称     对应的类型 request HttpServletRequest response HttpServletResponse config Servle ...

随机推荐

  1. 在pycharm中创建py文件——创建你的第一个项目

    开启编程第一步   创建一个项目 创建项目了xdm,敲黑板了哈 首先打开你的pycharm,点击New Project新建项目 就会进入到配置你这个项目所要用到的环境,这里我们用python列举 在L ...

  2. SpringBoot集成MyBatis-Plus框架

    1.说明 本文介绍Spring Boot集成MyBatis-Plus框架, 重点介绍需要注意的地方, 是SpringBoot集成MyBatis-Plus框架详细方法 这篇文章的脱水版, 主要是三个步骤 ...

  3. 官网下载mysql的方法

    mysql官网    http://www.mysql.com/ 方法一:    (1)登陆官网 (2)把页面拉到最底部,点击Downloads(GA) 下边的MySQL Community Serv ...

  4. HiSql 实现case语法操作 新一代无实体ORM框架

    HiSql 实现case语法操作 在SqlServer,Oralce,Hana,PostGreSql,MySql 这些数据都支持SQL case语法,平常在实现业务开发中也会常用到,那么HiSql对于 ...

  5. Typescript Record的用法

    Record<Keys,Type> 构造一个对象类型,其属性key是Keys,属性value是Tpye.被用于映射一个类型的属性到另一个类型 interface CatInfo { age ...

  6. spring-Ioc(二)学习笔记

    属性注入方式 设值注入:也就是set注入,通过setter方法注入 java Bean private ITestDao dao; public void setDao(ITestDao dao){ ...

  7. window10 查看端口列表 - 查看占用的进程-销毁该进程

    cmd进入指令框后 查看端口列表 netstat -ano 查看占用的进程 [6666是端口号对应的进程数] tasklist|findstr "6666" 销毁该进程 [6666 ...

  8. 微信小程序组建通信

    子组件传递父组件需要用到triggerEvent方法,当子组件(自定义组件)点击button的时候调用triggerEvent方法传递一些数据,首先第一个属性为自定义名称(myevent)对应父组件( ...

  9. 使用swagger生成API文档

    有时候一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率.本文将介绍如何使用swagger生成接口文档. swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RES ...

  10. jenkins学习9-测试报告发邮件(Email Extension Plugin)

    前言 前面已经实现在jenkins上展示html的测试报告,接下来只差最后一步,把报告发给你的领导,展示你的劳动成果了. 安装 Email Extension Plugin 插件 jenkins首页- ...