一、浏览器问题

当你的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. Intel CPU参数查询网站

    链接:https://ark.intel.com/#@Processors

  2. 2019天梯赛练习题(L2专项练习)

    7-2 列出连通集 (25 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递增的顺序 ...

  3. CF633H Fibonacci-ish II

    题目描述 题解: 坑题搞了三天. 莫队+线段树. 还有一些和斐波那契数列有关的性质. 首先答案是$a_1f_1+a_2f_2+…+a_nf_n$, 考虑插进去一个元素对答案产生的影响. 比如插进去一个 ...

  4. 19. REFERENTIAL_CONSTRAINTS

    19. REFERENTIAL_CONSTRAINTS REFERENTIAL_CONSTRAINTS表提供有关外键的信息. REFERENTIAL_CONSTRAINTS有以下列: CONSTRAI ...

  5. (14) openssl x509(签署和自签署)

    主要用于输出证书信息,也能够签署证书请求文件.自签署.转换证书格式等. openssl x509工具不会使用openssl配置文件中的设定,而是完全需要自行设定或者使用该伪命令的默认值,它就像是一个完 ...

  6. tomcat 403错误和ls: cannot open directory '.': Permission denied

    在centos7 linux系统上使用docker进行tomcat部署项目测试的时候发现第一个错误:浏览器返回403 错误,显然是一个权限问题,禁止访问.下面是我一步一步的操作: 1 使用的docke ...

  7. 【HDU 1402】A * B Problem Plus(FFT)

    Problem Description Calculate A * B. Input Each line will contain two integers A and B. Process to e ...

  8. 【BZOJ 2431】 [HAOI2009] 逆序对数列 (DP)

    Description 对于一个数列{ai},如果有iaj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的 数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样自然数数 ...

  9. ES6(对象扩展)

    ES6(对象(object)新增特性) 1.简介表示法 o,k 为属性:这种为无方法的情况. 这种为有方法. 2.属性表达式 ES6中,[a]就是 b . 3.新增API 1.数组也是引用类型 2.O ...

  10. Light OJ-1082 - Array Queries,线段树区间查询最大值,哈哈,水过~~

                                                                                                        ...