一、浏览器问题

当你的html页面或jsp页面没有显式声明页面编码的时候,也就是没有下面其中之一的代码

<meta http-equiv="content-type" content="text/html; charset=utf-8">          ①

<%@ page language="java" import="java.util.*" contentType="text/html;charset=utf-8"%>    ②

的时候,浏览器解析页面使用的是自身的默认编码。本人对四款浏览器做了测试,得到以下结果:

IE9                                          GB2312 (对于http协议而言,本地file协议则为utf-8)

Chrome(版本 42.0.2311.152 m)       GBK

FireFox(版本 38.0.1)         GBK

360浏览器7       UTF-8(对于http协议而言,本地file协议则为GBK)

 
而当你有显式声明页面编码类型的时候(也就是页面里有上述代码的其中一句,其中 ②只能在jsp页面里使用),则浏览器会根据你声明的编码类型进行解析。

二、声明语句的优先级

 ②的优先级非常高,表现在两个方面:1、当此语句存在时,页面按 ②声明的编码进行解析,这时候①失效(所以我觉得可以省略不写)2、当eclipse的编辑器设置为其它编码时,②的优先级仅次于other设置(据本人分析,在eclipse编码设置里面,优先级依次为other > ② > default(这个在preferences→General→ContentTypes→Text→JSP里面设置,没有的话则跟随workspace的编码)> workspace(这个在preferences→WorkSpace里面设置)。这里面有些效果要重启eclipse才看得出来,可能是机制的问题,有些设置后并没有立即生效。(其实第1点表明②在浏览器优先级很高,第2点表明②在eclipse中优先级很高)

至于①,优先级很低,至少在default之下,所以①并没有什么卵用,我觉得它唯一比较明显的价值就是给浏览器指定页面编码。也就是eclipse跟①并没有契合度。。如果把eclipse也比喻为一种浏览器,②同样对eclipse起作用,但是①对eclipse就无能为力。

三、eclipse的编码与显示

其实①跟②都只是给浏览器声明了解析要用哪种编码,但是你内容都是eclipse里面编辑的,所以归根到底,乱码也跟eclipse的编码设置有关。。。只有当eclipse的编码跟你声明的编码一样的时候,浏览器才不会出乱码。(这个道理适用于一切IDE)③

正如前面所说,②的优先级很高,所以它取代了eclipse的默认编码,这也就是为什么通过设置②,我们就不需要设置eclipse编码的原因。(②真的是一举两得啊,把浏览器跟eclipse都搞定了)

当把②从页面里删掉的时候,eclipse的编码会自动设置为default里面的编码,不过要保存之后才能体现。如果再把②加回去,eclipse的编码又设置成②中指定的。(不信的话你可以在②的charset那里写成abcd,你会看到eclipse的default的编码变成了abcd,当然abcd是无效的编码)

在eclipse切换编码的时候,页面随即进行了重新编码,并且自动保存。而当切换编码后出现了乱码,其实也是可以挽救的,因为只是表面现象,只要你把浏览器的编码设置成跟eclipse一样,就能正常显示。。其实这里面是三个环节:eclipse编码,页面声明编码和浏览器编码(参考③)。。。其中浏览器编码默认跟页面声明编码一样,你当然可以手动把浏览器切换成其它编码啦。(说了这么多,其实③才是通用法则,当然实现③的关键是在页面写上②)

这次就差不多总结这些吧。基本上都是本人实验所得,还不够权威,仅供参考。有更好想法欢迎交流。

eclipse下对中文乱码问题的一些思考的更多相关文章

  1. Xcode下的中文乱码问题

    Xcode下的中文乱码问题 转载自:http://linyehui.me/2014/07/09/convert-gbk-to-utf8-on-mac.html =========== 问题原因 绝大部 ...

  2. Eclipse导入工程中文乱码问题

    此文引用自eclipse导入工程中文乱码问题,作者elleniou. 关于Eclipse导入工程中文乱码问题实在是一个非常令人头疼的,深感一定要彻底解决才算放心,故摘抄上文如下: eclipse之所以 ...

  3. ubuntu系统下matplotlib中文乱码问题

    参考 [ubuntu系统下matplotlib中文乱码问题 - CSDN博客](https://blog.csdn.net/jeff_liu_sky_/article/details/54023745 ...

  4. 解决windows下vim中文乱码

    解决windows下vim中文乱码 windows安装了vim8,也就是gvim后,打开带有中文的文档,显示中文是乱码. 毕竟有许多文档我是用utf-8编码的,所以解决的办法是设置一下编码为utf-8 ...

  5. windows下gvim中文乱码解决方案

    网罗了一些网上的解决windows下gvim中文乱码的解决方案,都试了一遍,可惜都不能完全解决我的所有问题,最后我综合一下网上的两种方案,得到了最后完全解决我的中文乱码问题的方案,配置很简单,就是把下 ...

  6. 180606-Linux下jdk中文乱码问题解决

    文章链接:https://liuyueyi.github.io/hexblog/2018/06/06/180606-Linux下jdk中文乱码问题解决/ linux下jdk中文乱码问题解决 之前遇到过 ...

  7. windows下mysql中文乱码, 配置解决方法

    内容源自:windows下mysql中文乱码, 配置解决方法 解决方法:打开mysql安装目录,打开my.ini文件(如果只有my-default.ini文件,先将其改名为my.ini!!!) 修改内 ...

  8. XAMPP下MYSQL中文乱码问题的解决

    XAMPP下MYSQL中文乱码问题的解决 现象描述: 安装完成XAMMP后,内置有MySQL数据库. 新建好自己的数据库后通过hibernate往表里面添加一些中文信息时全部乱码变成“??”. 问题解 ...

  9. JAVAWEB开发下常见中文乱码问题解决

    JAVA环境下处理中文乱码问题一直是很多人困扰的问题,像URL传参乱码,写进数据库乱码,服务写中文文字图片乱码处理及导出PDF乱码. 1:安装中文支持 yum groupinstall "f ...

随机推荐

  1. 我的MySql掉队了

    本来今天高高兴兴,突然: raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)&qu ...

  2. centos7.x设置静态IP

    本教程以centOs7.4为例: 1.点击虚拟机的[编辑]选项,选择[虚拟网络编辑器] 2.选择[VMnet8],然后点击[NAT设置] 3.记录[子网掩码]和[网关IP],后面会用到 4.进入终端, ...

  3. python 03 8/25-8/27 range 、randint

    import random """字符串的操作中 三种方法,只包含左索引,不包含右索引""" hi= "bokeyuan pyth ...

  4. Python中的函数(5)

    一.向函数中传递任意数量的实参 有时候,你预先不知道函数需要接受多少个实参,Python中函数可以收集任意数量的实参. 栗子:来看一个打印好友列表功能的函数,它需要接收任意数量的好友名.如下: def ...

  5. Spring Boot Web开发中Thymeleaf模板引擎的使用

    这里使用的是idea 1.新建Spring Boot项目 File-->New-->Project...,然后选择左边的Spring Initializr-->Next,可根据自己的 ...

  6. win10修改文件管理器默认打开我的电脑

  7. ArrayList练习之存储自定义对象并遍历

    新建一个Student.java类 Student.java /* * 这是一个学生类 */ public class Student { private String name; private i ...

  8. idea没有tomcatserver问题解决

    https://www.cnblogs.com/a8457013/p/7795987.html 在配置tomcate时有时候按照网上说的找不到tomcat Server,不知不觉花了很长时间这时我们在 ...

  9. ERP类系统设计学习

    文章:分布式.服务化的ERP系统架构设计 文章的方法是对系统进行拆分,拆分成多个子系统.

  10. MTK GPIO 新增变量配置

    主要涉及的文件: 1.需要配置preloader ,lk ,kernel vendor GPIO_YuSu.cmp文件增加IO别名: 2.需要配置preloader ,lk ,kernel vendo ...