一、浏览器问题

当你的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. centos 7 安装 docker(详细)

    更新源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O/etc/yum.re ...

  2. GC 机制

    1. 为什么需要垃圾回收? 因为内存是有限的,在不断的分配内存空间而不回收的话内存迟早都会被消耗完,所以垃圾回收是必须的. 2. 触发GC 的条件: 1.GC在优先级最低的线程中运行,一般在应用程序空 ...

  3. 自动化项目配置或用例文件格式推荐--yaml

    关于yaml YAML语言的设计目标,就是方便人类读写.如果你想要实现一些用ini不好做到的配置,可以使用yaml格式作为配置文件 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使 ...

  4. python3 时间复杂度

    时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道.但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就 ...

  5. c# 类如何生成dll文件及引用

    1.打开“工具”菜单下的“外部工具”子菜单: 2.点击“添加按钮,增加一个菜单,菜单内容填写如下: 注意参数那里为:/k "C:\vs2010\VC\vcvarsall.bat" ...

  6. 基于神经网络的embeddding来构建推荐系统

    在之前的博客中,我主要介绍了embedding用于处理类别特征的应用,其实,在学术界和工业界上,embedding的应用还有很多,比如在推荐系统中的应用.本篇博客就介绍了如何利用embedding来构 ...

  7. 洛谷 P 1018 乘积最大 ==Codevs

    题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得 ...

  8. 【HDOJ6319】Ascending Rating(单调队列)

    题意: 思路: 倒着来是因为这样可以维护每一个当过最大值的数,而正着不行 #include<cstdio> #include<cstring> #include<stri ...

  9. ACM-ICPC 2018 徐州赛区网络预赛 D 杜教筛 前缀和

    链接 https://nanti.jisuanke.com/t/31456 参考题解  https://blog.csdn.net/ftx456789/article/details/82590044 ...

  10. PAT (Advanced Level) 1031. Hello World for U (20)

    简单题. #include<iostream> #include<cstring> #include<cmath> #include<algorithm> ...