`
fantasy
  • 浏览: 513869 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java中的字符集编码入门(四)

阅读更多
网页文件的编码接着上节的思路说,一个网页要想在浏览器中能够正确显示,需要在三个地方保持编码的一致:网页文件,网页编码声明和浏览器编码设置。

首先是网页文件本身的编码,即网页文件在被创建的时候使用什么编码来保存。这个完全取决于创建该网页的人员使用了什么编码保存,而进一步的取决于该人员使用的操作系统。例如我们使用的中文版WindowsXP系统,当你新建一个文本文件,写入一些内容,并按下ctrl+s进行保存的那一刻,操作系统就替你使用GBK编码将文件进行了保存(没有使用UTF-8,也没有使用UTF-16)。而使用了英文系统的人,系统会使用ISO-8859-1进行保存,这也意味着,在英文系统的文件中如果输入一个汉字,是无法进行保存的(当然,你甚至都无法输入)。

一个在创建XML文件时(创建HTML的时候倒很少有人这么做)常见的误解是以为只要在页面的encoding部分声明了UTF-8,则文件就会被保存为UTF-8格式。这实在是……怎么说呢,不能埋怨大家。实际上XML文件中encoding部分与HTML文件中的charset中一样,只是告诉“别人”(这个别人可能是浏览你的页面的人,可能是浏览器,也可能是处理你页面的程序,别人需要知道这个,因为除非你告诉他们,否则谁也猜不出你用了什么编码,仅通过文件的内容判断不出使用了什么编码,这是真的)这个文件使用了什么编码,唯独操作系统不会搭理,它仍然会按自己默认的编码方式保存文件(再一次的,在我们的中文WindowsXP系统中,使用GBK保存)。至于这个文件是不是真的是encoding或者charset所声明的那种编码保存的呢?答案是不一定!
例如新浪的页面就“声称”他是用GB2312编码保存的,但实际上却是GBK,也有无数的二把刀程序员用系统默认的GBK保存了他们的XML文件,却在他们的encoding中信誓旦旦的说是UTF-8的。
这就是我们所说的第二个位置,网页编码声明中的编码应该与网页文件保存时使用的编码一致。

而浏览器的编码设置实际上并不严格,就像我们第三节所说的那样,在浏览器中选择使用GB2312来查看,它实际上仍然会使用GBK进行。而且浏览器还有这样一种好习惯,即它会尽量猜测使用什么编码查看最合适。

我要重申的是,网页文件的编码和网页文件中声明的编码保持一致,这是一个极好的建议(值得遵循,会与人方便,与己方便),但如果不一致,只要网页文件的编码与浏览器的编码设置一致,也是可以正确显示的。
例如有这样一个页面,它使用GBK保存,但声明自己是UTF-8的。这个时候用浏览器打开它,首先会看到乱码,因为这个页面“告诉”浏览器用UTF-8显示,浏览器会很尊重这个提示,于是乱码一片。但当手工把浏览器设为GBK之后,显示正常。
说了以上四节这么多,后面我们就来侃侃Java里的字符编码,你会发现有意思且挠头的事情很多,但一旦弄通,天下无敌(不过不要像东方不败那样才好)。
分享到:
评论

相关推荐

    Java中的字符集编码入门(五)Java代码中的字符编码转换Part1.pdf

    Java中的字符编码转换是编程实践中一个至关重要的概念,尤其是在处理多语言环境和跨平台交互时。Java通过统一采用UTF-16编码格式在JVM内部处理字符,简化了字符操作的复杂性。UTF-16是一种变长的Unicode编码,它可以...

    Java中的字符集编码入门(二)编码字符集与字符集编码的区别[参考].pdf

    在Java编程语言中,理解和掌握字符集编码是至关重要的,特别是在处理各种文本数据时。本文主要探讨了编码字符集和字符集编码的区别,这对于软件开发人员来说是基础且必要的知识。 首先,我们要区分两个概念:编码...

    Java中的字符集编码入门(五)Java代码中的字符编码转换Part1.doc

    ### Java中的字符集编码入门(五):Java代码中的字符编码转换Part1 #### 核心知识点概述: 本文档深入探讨了Java编程语言中字符集编码的基础知识,并着重讲解了字符编码转换的基本原理及其在Java代码中的应用。...

    Java中的字符集编码入门(六)Java中的增补字符.doc

    ### Java中的字符集编码入门(六):Java中的增补字符 #### 一、引言 随着全球化进程的加速和技术的发展,字符集编码已经成为软件开发不可或缺的一部分。Java 作为一种广泛使用的编程语言,对于字符集的支持至关...

    Java中的字符集编码入门(清晰书签版)[借鉴].pdf

    Java中的字符集编码是编程领域中的重要概念,尤其在处理多语言环境时显得至关重要。本文主要探讨了字符编码的历史发展,特别是ASCII、Unicode和UCS的关系及其在Java中的应用。 ASCII,即美国标准信息交换码,是最早...

    Java中的字符集编码入门(五)Java代码中的字符编码转换Part1[参考].pdf

    Java中的字符编码转换是编程实践中不可或缺的一部分,尤其是在处理多语言和跨平台的场景下。Java选择了UTF-16作为其内部字符表示的标准,这确保了在JVM内存中,所有字符都以统一的方式存储,避免了编码不一致带来的...

    125集专攻JAVA基础 JAVA零基础入门学习视频教程 动力节点JAVA视频教程.txt

    北京动力节点-Java编程零基础教程-049-Java基本语法-通过ASCII再理解字符编码.avi 北京动力节点-Java编程零基础教程-050-Java基本语法-ASCII.avi 北京动力节点-Java编程零基础教程-051-Java基本语法-ISO8859-1....

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    一一击破Java入门可能会遇到的难点和疑惑 抽丝剥茧,层层推进,让知识环环相扣,降低了学习的难度 通过大量的比喻、类比、对比和图示等多种讲解方式,学习效果好 对Java语言的每个语法都提供了一个或多个例程讲解 ...

    java编程入门第八章输入与输出

    9. **字符集与编码** - Java中的字符编码默认使用Unicode,通过`Charset` 类可以处理不同的字符编码。 10. **文件复制** - 使用Java I/O可以实现文件的复制,通常结合`InputStream` 和 `OutputStream` 的read和...

    java源码 java ee基础入门实例 2018127

    例如,过滤器可以用来实现权限验证、字符编码转换、日志记录等功能。通过实现javax.servlet.Filter接口并配置在web.xml中,即可定义和注册过滤器。 5. **JDBC实例**: JDBC(Java Database Connectivity)是Java...

    动力节点Java基础301集_史上最全的Java基础教程

    动力节点的《Java基础301集》是一个全面且深入的Java入门教程,涵盖了从基础知识到高级特性的广泛内容,适合Java初学者和寻求巩固基础的学习者。以下是一些主要的知识点详解: 1. **数据结构**:教程详细介绍了单项...

    Java NIO入门

    6. **字符集转换(Charset)**:NIO提供了一套完善的字符集转换机制,可以方便地进行字符编码和解码。 学习NIO,首先要理解如何创建和使用通道、缓冲区以及选择器。例如,通过`FileChannel`打开文件,然后使用`...

    java精要初学者速学入门

    4. **数据编码.ppt**:可能涵盖了字符编码相关的知识,例如ASCII、Unicode和UTF-8等编码标准,以及在Java中如何处理字符串和字符流,这是处理文本数据时必须了解的部分。 5. **集合框架**:Java集合框架是处理对象...

    Java入门基础零基础学习

    本篇文章主要针对Java初学者,提供了一系列基础知识的学习指南,包括基本概念、标识符与关键字的使用以及Unicode字符集的基本理解。 #### 一、标识符 1. **定义**:在Java中,标识符用于命名类、变量、方法等。...

    java初学者入门的部分概念描述

    #### 十二、字符集编码 Java使用Unicode编码,这意味着它支持世界上几乎所有的字符集。Java的字符类型`char`占用16位,足以容纳Unicode的基本多文种平面(BMP)的所有字符。 以上是Java初学者入门所需掌握的一些...

    Java手机程序设计入门6

    - 在开发过程中确保使用的字体支持中文字符集。 - 对于界面上的文字显示,应采用适合中文显示的字体设置。 - 在编写代码时,处理字符串时要注意使用Unicode编码,以确保中文字符能够正确处理。 #### Lightweight ...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    《Java Web编程宝典(十年典藏版)》是一本集技能、范例、项目和应用为一体的学习手册,书中介绍了应用Java Web进行程序开发的各种技术、技巧。全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境...

    Intellij IDEA 入门教程.pdf (高清文字版)

    IntelliJ IDEA为优化体验,提供了许多实用的技巧和设置,例如修改字符集、项目字符集、自动编译JSP、生成JAVADOC文档、设置Spring支持、启动时不自动打开项目、全屏设置等。此外,对于性能优化,也介绍了启动参数...

    动力节点Java基础301集

    以上就是“动力节点Java基础301集”所涵盖的主要知识点,这套教程不仅适合初学者入门,也适合有一定基础的学习者进一步提升自己的技能水平。通过系统学习这些知识点,相信每位学习者都能够打下坚实的Java编程基础。

Global site tag (gtag.js) - Google Analytics