Java与网页JSP文件编码的小总结
感谢大佬:
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来指定编码编译源文件,不指定的话,默认获取系统文件编码。注意编码数据的获取问题,特别是网络数据传输时,还有数据库数据传输时,注意解码编码转换。
大佬博文:

Java与网页JSP文件编码的小总结的更多相关文章
- JSP文件编码
1. pageEncoding: <%@ page pageEncoding="UTF-8"%> jsp页面编码: jsp文件本身的编码 2. contentType: ...
- jsp文件中charset和pageEncoding的区别
jsp文件中charset和pageEncoding的区别: contentType的charset是指服务器发送给客户端时的内容编码,contentType里的charset=utf-8是指示页面 ...
- 格式化MyEclipse代码(java、jsp、js)行的长度@修改java代码字体@修改Properties文件编码方式
每次用MyEclipse/Eclipse自带的快捷键Ctrl+shift+f格式化代码时,如果原来的一行代码大于80列,Eclipse就会自动换为多行.如果想格式化代码后不想让代码换行可以通过以下方式 ...
- java servlet上传文件并把文件内容显示在网页中
servlet3.0(JDK1.6)自带的API即可实现本地文件的上传,Servlet3.0新增了Part接口,HttpServletRequest的getPart()方法取得Part实现对象.下面我 ...
- JSP设置文件编码
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- java中文乱码解决之道(七)-----JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...
- 用java编网页的学习流程,我的一些小心得(初学java到高深运用)
(1)java基础:首先得会写int,String,for循环,数组,**等等(熟练各种基础的关键字,各种java自带的排序,随即等等算法)什么是封装,继承,多态,然后private,public,p ...
- java基础80 JSP基础知识点(网页知识)
1.jsp的引入 Servlet的作用:用java语言开发动态资源技术!!! Jsp的作用:用java语言(+html语言)开发的动态资源技术!!! Jsp就是servlet 问题:为什 ...
- JSP(3) - 9个JSP内置对象 - 小易Java笔记
1.9个JSP内置对象 内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse config Servle ...
随机推荐
- Linux_Cornd任务调度
Crond任务调度 进行定时任务的设置 概述 任务调度:是指系统在某个时间执行特定的命令或程序 作用:避免重复工作 基本语法 crontab [选项] 选项 功能 -e 编辑crontab定时任务 - ...
- C# 服务器发送邮件失败
邮件发送相关端口 首先说下邮件发送的端口:25/465/587 25端口 25端口是为SMTP协议服务开放的,是这三个端口中最老的一个.25端口也称为消息中继端口,因为这个端口经常被恶意利用,所以现在 ...
- NoSQL是什么(一)
最常见的数据库可以分为下面的两种类型: RDBMS(关系型数据库):常见的关系型数据库有 Oracle.DB2.Microsoft SQL Server.Microsoft Access.MySQL: ...
- spring-Ioc(二)学习笔记
属性注入方式 设值注入:也就是set注入,通过setter方法注入 java Bean private ITestDao dao; public void setDao(ITestDao dao){ ...
- Centos7 logrotate日志切割
https://www.cnblogs.com/kevingrace/p/6307298.html 在当前目录下 vim ***** 文件 需要切的日志 /home/soft/app/logs/ ...
- spring boot + redis --- 心得
1.前言 习惯使用springMVC 配置 redis ,现在使用spring boot ,得好好总结怎么在spring boot 配置和使用 ,区别真的挺大的. 2.环境 spring boot ...
- 【填坑往事】使用Rxjava2的distinct操作符处理自定义数据类型去重的问题
最近碰到一个问题,自定义数据类型列表中出现了重复数据,需要去重.处理去重的办法很多,比如借助Set集合类,使用双重循环拿每一个元素和其他元素对比等.这里介绍一种简单而且比较优雅的方式:使用Rxjava ...
- 设计模式-Java版-全-附代码-超生动实例
阅读推荐:设计模式-简单篇 项目地址:https://gitee.com/zwtgit/gof23 学习网站推荐: https://refactoringguru.cn/design-patterns ...
- Docker 安装与常用命令
目录 Docker 安装 1)安装 2)启动 3)镜像加速器 Docker 常用命令 1)Docker 进程相关命令 2)Docker 镜像相关命令 docker search:查找镜像仓库中的镜像 ...
- PWA 技术落地!让你的站点(Web)秒变APP(应用程序)
Web应用方兴未艾,我们已经十分习惯习惯了在电脑上进行以自己的工作,而随着众多功能强大的在线网站,我们的Windows的桌面也不再拥挤着各种快捷方式:不光是PC端,在移动端我们也不再在浩如烟海的应用市 ...