一、浏览器问题

当你的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. 一套出完被喷爆的noip提高组+的题目

    这是一个悲伤的故事. 校内胡测嘛,这当然的重视啦,好好地出完题,看题面不是很难哦,那就用它吧. 结果今天老师考试就用上了(情况不妙) 果然考试过程中就有打喷嚏的冲动. 一道暴力,一道概率DP,一道主席 ...

  2. centos7 rsync+inotify软件实现集群服务的数据备份(一)

    一.rsync软件的说明: 1.1 什么是rsync rsync是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件.它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达 ...

  3. Go:sync.Once 实现单例模式

    代码: package main import ( "fmt" "sync" ) type Singleton struct{} var singleton * ...

  4. Django框架基础知识11-会话状态保持及表单

    浏览器存储cookie的方式不太安全,那有没有更好些的来存储登入状态的方式呢??? 状态保持----cookie和session: 状态保持: 1.http协议是无状态的:每次请求都是一次新的请求,不 ...

  5. oracle如何重做日志组

    1.查询数据库中的重做日志组 SQL> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STA ...

  6. 读书笔记之《编程小白的第1本Python入门书》

    本书电子版下载地址:百度网盘 写在前面:你需要这本书的原因 有没有那一个瞬间,让你想要放弃学习编程? 在我决心开始学编程的时候,我为自己制定了一个每天编程1小时的计划,那时候工作很忙,我只能等到晚上9 ...

  7. 【HIHOCODER 1039】 字符消除

    链接 问题描述 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被 ...

  8. 关于hibernate中的 lazy="false“

    如上图所示,warehousePicked 中包含了warehousePicking 同时,数据库中warehousePicking存在数据 ,但是在debug 时warehousePicked的be ...

  9. 【Codeforces 1083A】The Fair Nut and the Best Path

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 我们最后要的是一条最长的路径. 这条路径的权值和是所有点的权值和-所有边的权值和且这个值最大. 显然如果我们在某一条边上的累计的权值和< ...

  10. 搭建双塔(vijos 1037)

    描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块 ...