Java语言编程 – 编码问题

栏目: Java · 发布时间: 7年前

内容简介:Java语言编程 – 编码问题

随着计算机的发展,几乎每个国家都在使用计算机,然而每个国家都有自己的语言,如何让各个国家的语言能够在计算机中使用,这就会涉及到编码的问题。

在此主要讲解一下,ASCII、ISO8859-1、GB2312、GBK、Unicode和UTF-8编码及之间的关系。

5.1 ASCII

计算机最早出现是在美国,而美国的语言是26个英文字符大小写、数字、换行空格等,所以他们就用7位的二进制数表示他们所需要的字符,就是2的7次方,也即128个字符,同时最高位恒为0,这就是ASCII编码,全称是:American Standard Code for Information Interchange,中文意思是:美国信息互换标准代码。

5.2 ISO8859-1

随着计算机使用越来越广泛,有些国家的语言中的有些字符,在ASCII编码中找不到,由于ASCII编码的最高位恒0,即没有利用起来,所以就将最高位也利用起来,即将编码扩展到8位,那么就是2的8次方256个字符了,这就是ISO8859-1编码。ISO8859-1编码是兼容ASCII编码的。

5.3 GB2312和GBK

计算机进入中国后,我们发现常用汉字就会有6000多个,那么ISO8859-1和ASCII编码都是远远没法满足的。当时我们中国就定义了一个标准:小于127的字符与原意义相同(保持与ASCII的兼容性),但是两个大于127的字符连在一起时,就表示一个汉字。这样我们就凑出来了7000多个简体汉字的编码了。此外,这些编码还对ASCII码中已有的标点、数字、字母都用两字节重新编码,这就是通常说的“全角”字符。这种编码就是GB2312。

但是中国的汉字还是有很多,GB2312无法显示繁体中文,于是我们不得不继续挖掘GB2312的潜能,干脆只要求第一个字节大于127而不管后一个字节的大小了。这种扩展之后的编码方案称为GBK。

5.4 Unicode

由于各个国家都搞出了一套自己的编码标准,结果相互之间谁也不懂谁的编码,互不兼容。此时ISO(国际标谁化组织)为了解决这个问题,搞了一个全球统一的字符集编码方案,叫UCS(Universal Character Set),俗称Unicode。Unicode的编码中规定所有字符都用2个字节,即用16位来表示,能表示的字符数就是2的16次方,即65536个字符,这样基本上全球所有字符都可以包含了。但是这样有个问题,就是对于英文字符来说,原来它们用1个字节就可以表示的,现在要用2个字节来表示,这样就会浪费一半的空间。

5.5 UTF-8

互联网出现后,为了解决Unicode编码如何在网络上传输的问题,于是面向传输的众多UTF(UCS Transfer Format)标准出现了,其中UTF-8是在互联网上使用最广泛的一种Unicode的实现方式,UTF-8最大的一个特点,就是它是一种变长的编码方式。 它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度,当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,注意的是Unicode一个中文字符占2个字节,而UTF-8一个中文字符占3个字节。

5.6 最佳实践

为了避免各种中文乱码问题,我们编码时,统一用UTF-8编码。由于目前我们是使用notepad++来编写程序,所以需要设置notepad++的编码方法。当我们编写程序不是UTF-8编码时,我们可以利用notepadd++,将其转换成UTF-8。转换方法,就是先notepad++打开该文件,然后点击“编码”,选择“UTF-8无BOM编码格式”,保存即可。

Java语言编程 – 编码问题

注意事项:

当我们用UTF-8编写程序时,需要用javac命令来编译程序,由于javac编译程序时,它会默认选择操作系统的编码来编译程序,中国大陆的电脑默认的操作系统编码大部分都是GBK,那直接用javac命令编译时就会出错,出现中文乱码的情况,原因很简单,就是我们用的UTF-8编码来写的程序,但是又是用的GBK编码来编译的程序,这样肯定会乱码。此时需要在编译的时候,指定编译的编码,即:

javac -encoding utf-8 HelloWorld.java

通过-encoding utf-8来指定编译编码。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Java语言编程 – 编码问题 Java语言编程 – 编码问题

关注微信公众号

Java语言编程 – 编码问题


以上所述就是小编给大家介绍的《Java语言编程 – 编码问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Hit Refresh

Hit Refresh

Satya Nadella、Greg Shaw / HarperBusiness / 2017-9-26 / USD 20.37

Hit Refresh is about individual change, about the transformation happening inside of Microsoft and the technology that will soon impact all of our lives—the arrival of the most exciting and disruptive......一起来看看 《Hit Refresh》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

SHA 加密
SHA 加密

SHA 加密工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具