pageEncoding和contentType的区别

来源:互联网 发布:期货实时行情数据接口 编辑:程序博客网 时间:2024/05/21 07:02

本人菜狗一枚,如文章有所错误,望各位大佬告知,不胜感激

 

要想说明两者的区别,先从java编译器和虚拟机开始说起。

我们在一些集成开发环境编写程序时,实际采用的编码是平台的编码方式,例如在NetBeans平台上,(以下平台均为NetBeans)右键项目-》属性,可以看到编码方式,这就是编写程序时采用的编码方式。

在编写完成后,点击编译运行,平台共做了三件事情

1、将文件的编码方式转换为UTF-8编码(注意是转换)

2、java编译器将UTF-8编码的文件编译成以UTF-8为编码方式的class文件

3、 在运行时,class文件运行在JVM上,此时JVM会将class文件转换为UTF-16(即unicode)编码,在输出值时,转换为平台的编码方式后输出。

 

所以我们常说java的默认编码方式是unicode,其实是指底层JVM的编码方式,在NetBeans上用String.getBytes()获得字节数组后输出字节数组的长度,会发现不一定就是unicode编码对应的字节数,这并不是说java的编码方式不是unicode,而是因为String.getBytes()会利用平台的编码方式对字符串进行编码

 

回到刚刚的问题上,pageEncoding和contentType的区别在哪?

PageEncoding是指jsp文件的编码方式,将编码方式提供给编译器,以便编译器进行编码转换,而contentType是输出到网页内容时采用的编码方式,由JVM转换编码后输出。

 

举个例子

如果在jsp中有中文“计算机”,若未指定pageEncoding,则无法确定java编译器的转换过程是否正确,有可能输出后发现是乱码,如果指定了pageEncoding,则一定可以正常显示

原创粉丝点击