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

字符集与编码的区别

    博客分类:
  • java
阅读更多

最近因为工作需要,需要做关于byte的处理工作,期间遇到了编码问题,于是上网搜了一把,下面这篇文章是我对编码的了解程度写的总结,本人水平有限,还望各位不惜赐教。

 

字符集和编码的区别:字符集是一个字符和数字的对应表;编码是指这些字符对应的数字在计算机中如何保存。

ASCII,GB2312,GBK,GB18030,BIG5这些字符集的字符对应的数字,跟编码的数字是一样的,所以都可以认为他们的名称即代表字符集也代表编码。但是有一个例外,就是unicode字符集,因为各种原因,unicode有3种编码,下面将说明。

 

ASCII

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。(from 百科)

 

GB2312,GBK,GB18030

中国编制的汉字字符集,通过扩展ASCII字符集来实现的,他们包含的汉字数量是GB2312 < GBK < GB18030,这3种字符集除了包含ASCII字符,还包含数学符号、罗马希腊的字母、日文的假名。要注意的是,GB2312和GBK是固定2个字节,但是GB18030跟utf-8一样是变长度的(1-4字节),并且GB18030还包含中国少数民族的字符。这3种字符集因为各自的编码只有1种,所以通常我们都认为他们的名称即代表字符集也代表编码。在操作系统中,这些编码统称为ANSI编码。

 

unicode

(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。unicode的每个字符用2个字节表示其字符映射的标识。比如"码"这个字符,unicode码是0x7801。unicode字符集默认的编码是utf-16,假如你在程序里指定编码是unicode,实际上是使用utf-16。在Java中,用\uxxxx这种格式表示unicode。

 

ANSI编码

unicode和ANSI都是字符代码的一种表示形式。为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 '中' 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。(from 百科)

 

utf-8编码

utf编码是专为unicode设计的传输格式,比如在网络上传输,你从文件里把内容读到程序里也是传输,都可以用到它。顾名思义,UTF-8就是每次8个位传输数据,而UTF-16就是每次16个位,如此类推,还有个编码是utf-32。unicode字符集默认的编码是utf-16,并且跟unicode字符映射表一一对应,比如上面的"码"字,utf-16也是用0x7801来保存。所以utf-16是固定2个字节的,这让用英文的人很不高兴,本来用1个字节就能搞定的abcd字符,utf-16却要用2个字节来保存。于是utf-8出现了,这是一种可变长度的编码,它的长度范围是1-6字节,ASCII字符仍然用1字节表示,汉字用3个字节表示,比起GB2312,GBK,GB13030等汉字编码多了1个字节,我想这就是很多中文网站仍然用GB编码的原因吧。另外,正确来说utf-8最多是4字节(1 ASCII, 2 希腊字母, 3 汉字, 4 平面符号),因为后面2个字节在unicode里还没定义任何字符。

utf-8,utf-16,utf-32是unicode准备的3套编码方案,最常用的是utf-8。

 

因此,我们编程中只要使用编码就行了,但是字符集这个概念我们同样需要了解。

 

 

参考文章:

说说字符集和编码

Java的中文处理学习笔记:Hello Unicode

关于unicode,mbcs,utf8,charset,encoding等相关概念的说明

字符集与编码[下]

字符集与编码

分享到:
评论
1 楼 kis_eye 2010-10-11  
又长见识了,非常感谢LZ

相关推荐

    字符集与字符集编码简介

    字符集与字符集编码简介 我们知道,计算机只能识别诸如0101这样的二进制数,于是人们必须以二进制数据与计算机进行交互,或者先将人类使用的字符按一定规则转换为二进制数。 那什么是字符呢?在计算机领域,我们把...

    字符集和字符编码详解

    字符集和字符编码是计算机处理文字的基础,它们决定了如何在二进制的世界中表示和传输人类语言。本文将深入探讨这两个概念,以及相关的知识点。 首先,我们要理解什么是字符集。字符集,顾名思义,就是一个集合,...

    常用字符集及字符编码简介

    字符集与字符编码是计算机处理文字的基础,它们决定了如何用二进制表示各种语言的字符。在信息技术领域,理解和掌握字符集与字符编码至关重要,因为它们直接影响到数据的存储、传输和显示。以下是对这些概念的详细...

    维吾尔文字符集unicode编码表

    ### 维吾尔文字符集Unicode编码表 #### 概述 本文档提供了一份详细的现代维吾尔文字符集的Unicode编码表。这份表格对于理解、处理和展示维吾尔语文字具有重要意义。通过这份表格,我们可以清晰地看到每一个维吾尔文...

    Java字符集和编码

    ### Java字符集和编码 #### 一、引言 在探讨Java字符集和编码之前,我们先了解一下为什么在Java编程中需要关注字符集和编码。Java作为一种广泛应用的编程语言,其内部采用的是Unicode编码,这使得Java能够很好地...

    深入理解字符编码(字符集 字符编码 字符显示 乱码问题)

    文档中主要介绍了各类字符集以及相关的字符编码,字符的显示原理,从输入到显现的整个过程,程序中出现的乱码问题以及解决方案

    字符集和字符编码

    GB2312 是中国大陆规定的字符集和编码,取消了 EASCII 的扩展字符,规定一个小于 127 的字符的意义与原来相同,但两个大于 127 的字符连在一起时,就表示一个汉字。GB2312 编码使用两个字节表示一个汉字,前面的一个...

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

    本文主要探讨了编码字符集和字符集编码的区别,这对于软件开发人员来说是基础且必要的知识。 首先,我们要区分两个概念:编码字符集和字符集编码。编码字符集,如UCS(Universal Character Set)或Unicode,是一个...

    Mysql字符集编码详解

    Mysql字符集编码详解 Mysql数据库中的字符集编码问题是许多开发者经常遇到的一个问题,特别是在JAVA项目中。解决这个问题需要从多方面入手,包括服务器、数据库、数据表和连接等四个层次。这篇文章将详细介绍如何...

    字符集和编码

    字符集和编码, 原来是这样

    字符集编码查询/反查工具

    字符集编码是计算机科学中的一个重要概念,涉及到数据的存储、传输和显示。在这个"字符集编码查询/反查工具"中,我们可以看到涉及到的关键技术包括字符集、二进制、十六进制、Base64以及URL编码。这些知识点在信息...

    字符编码和字符集研究

    字符编码则是字符集与二进制数字之间的映射关系,它是计算机存储和处理字符的方式。通过字符编码,每个字符都可以被转化为一系列的二进制位,以便计算机能够识别和操作。编码过程需要先对字符集内的字符进行排序,...

    字符集和字符编码相关知识文档

    字符集和字符编码是计算机处理文本的基础,它们决定了如何将人类使用的文字和符号转换成计算机可以理解的形式。本文档主要介绍了几种常见的字符集和字符编码,包括ASCII、DBCS、GB2312、GBK、GB18030、BIG5以及UCS和...

    字符集与编码方式简介

    字符集与编码方式简介 英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编

    qt实现转换文件字符集编码

    在IT领域,字符集编码是处理文本数据时一个至关重要的概念。不同的编码方式决定了如何将字符映射到二进制表示,以及如何从二进制还原出字符。Qt是一个跨平台的应用程序开发框架,它提供了丰富的API来处理各种编码...

    java字符集编码问题

    本文旨在深入探讨与Java相关的字符集编码知识,包括但不限于编码的基本概念、几种常见的字符集编码类型及其特点,以及Java如何处理这些字符集编码问题。 #### 二、编码基本知识 1. **ISO 8859-1** ISO 8859-1是...

    gb18030所有字符集与码表.rar

    《GB18030字符集详解及其码表解析》 GB18030,全称为《信息技术...通过深入研究"gb18030所有字符集与码表.xls",开发者可以更好地掌握GB18030的编码规则,从而在嵌入式系统和其他应用场景中实现高效、准确的文本处理。

    关于字符集编码

    字符集编码是信息处理领域的一个基本技术,它涉及将自然语言中的字符集合与数字系统之间建立对应关系,从而使得计算机可以处理和存储文本信息。字符集是系统支持的所有抽象字符的集合,这些字符包括各国文字、标点...

Global site tag (gtag.js) - Google Analytics