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

字符集与编码-概念区分

阅读更多
  在这里主要记录一下字符集与编码这两个概念,因为在日常编程当中很容易把这两个概念弄混掉。对这两个概念做澄清也有利于在编程当中对乱码问题的解决。
  首先来说一下什么字符集。其实字符集是一个抽象的概念,例如我们可以把所有的英文字母称为一个字符集,同样的,所有的中文字符也可以称为一个字符集,或者将人类所有语言中的所有字符称为一个字符集。之所以称之为是抽象的,是因为同一个字符可能有很多中不同的表现形式,例如我们在电脑屏幕上看到的“A”,其实是“A”这个字符的一个中具体的表现形式,可以理解为是“A”的图形化表示,当我们说出“A”时,就是用来字符“A”的另外一种表现形式,也就是声音的表现形式。为了能够以统一的方式表示字符集,人们就对字符集进行了编码,unicode就是一种对字符集的编码形式,称之为编码字符集。在unicode中,为每一个不同的字符都分配了一个唯一的整数,用来便是这个字符。而这种编码字符集的数量不会太多,现在普遍使用的就是unicode这种编码字符集。
  接着,再来说一下编码。虽然unicdoe为每一个字符都分配了一个唯一的整数,但是这个整数在计算机中的存储方式是可以多种多样的。这里就引申出来多种多样的字符集编码,像UTF-8,GBK,UTF-16等等。他们的作用就是规定如何将unicode中代表某个字符的整数以二进制的形式存储到计算机中。也就是说,字符集编码要解决的问题是,用几个byte来表示一个整数以及这几个byte中,高位存储什么,低位又存储什么等等问题?不同的字符集编码都是从某个角度来思考如何方便、有效地将unicode中的字符编码映射到计算机中去。例如UTF-16就是以便长的方式将unicode中的某一个字符对应的整数映射到成二进制形式,这样可以提高存储的效率,但是并不保证二者的值是相等的。而UTF-32则是原封不动地将unicode中的整数映射成二进制形式。

  之所以会有如此多不同的字符集编码方式,其实是随着计算机硬件不断发展的结果,因为计算机中的一次能够读取的字长在不断变化,因此也就出现来多种多样的字符集编码方式。当然,也有一些是考虑了如何提高字符存储效率的,例如utf-16这样的变长编码方式。
分享到:
评论

相关推荐

    PHP中文编码小技巧

    字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类。早期的软件(尤其是操作系统),为了解决本地字符信息的计算机处理,出现了各种本地化版本(L10N),为了区分,引进了 LANG, Codepage 等概念。...

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

    北京动力节点-Java编程零基础教程-076-Java基本语法-运算符-逻辑运算符-与操作的运算规则.avi 北京动力节点-Java编程零基础教程-077-Java基本语法-运算符-逻辑运算符-与操作的短路运算.avi 北京动力节点-Java编程...

    解析php开发中的中文编码问题

    字符编码集按长度分为 SBCS(单字节字符集),DBCS(双字节字符集)两大类。早期的软件(尤其是操作系统),为了解决本地字符信息的计算机处理,出现了各种本地化版本(L10N),为了区分,引进了 LANG, Codepage 等概念。...

    18.C#字符串和正则表达式参考手册 影印版

    1.2.2 字符和字符集 6 1.2.3 字符串数据类型 10 1.3 文本存储 10 1.3.1 高速缓存技术 12 1.3.2 内置 13 1.3.3 其他方法 14 1.3.4 .NET实现 14 1.4 字符串操作 18 1.4.1 连接字符串 18 1.4.2 从字符串中提取子串 20 ...

    day023-xml解析笔记和代码.rar

    第一行用了定义xml文件的,写版本号和字符集 1.注释不能放到第一行 1.必需有声明,声明必需在第一行。 2.文档声明的字符编码必需和文档本身的编码一致 2.标签不能交叉嵌套使用(标签名字随便...

    xml解析

    XML: 概念:Extensible Markup Language 可扩展标记语言 可扩展:标签都是自定义的。 功能 ...告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1 standalone:是否独立 取值: yes:不依赖其

    freemarker总结

    html:对字符串进行HTML编码 cap_first:使字符串第一个字母大写 lower_case:将字符串转换成小写 upper_case:将字符串转换成大写 trim:去掉字符串前后的空白字符 下面是集合的常用内建函数 size:获取序列中元素...

    中职计算机应用基础教案设计.doc

    "集播放音视频资料等手段," "应用领 "了解计算机在现代社会的工作与生 "让学生在活动中了解计算机" "域 "活中的各类应用; "的广泛应用 " " "了解数据与信息的概念及数据在计 " " " "算机中的处理过程 " " "计算机...

    JAVA面试题最全集

    编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...

    千方百计笔试题大全

    55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和...

    java面试宝典

    55、编码转换:怎样将GB2312 编码的字符串转换为ISO-8859-1 编码的字符串? 14 56、写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔。 14 59、Java 编程,打印昨天的当前时刻。 15 60、java 和...

    Tcl_TK编程权威指南pdf

    字符集与编码 消息目录 第16章 事件驱动的编程 tcl事件循环 after命令 fileevent命令 vwait命令 fconfigure命令 第17章 套接字编程 客户端套接字 服务器端套接字 回送(echo)服务 使用http获取一个url ...

    asp.net知识库

    .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库 SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下...

    LINGO软件的学习

    集名字必须严格符合标准命名规则:以拉丁字母或下划线(_)为首字符,其后由拉丁字母(A—Z)、下划线、阿拉伯数字(0,1,…,9)组成的总长度不超过32个字符的字符串,且不区分大小写。 注意:该命名规则同样适用...

    Java面试宝典-经典

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    WAP 无线应用协议

    4.3 WML字符集 51 4.3.1 参考处理模型 51 4.3.2 字符实体 51 4.4 WML语法 51 4.4.1 实体 52 4.4.2 元素 52 4.4.3 属性 52 4.4.4 注解 52 4.4.5 变量 52 4.4.6 区分大小写 53 4.4.7 CDATA 部分 53 4.4.8 处理指令 53 ...

    C语言程序设计标准教程

    C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。  本章讨论流式文件的...

    最新Java面试宝典pdf版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 90 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    java面试宝典2012

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 98 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序...

    Java面试宝典2010版

    19、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串? 20.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,...

Global site tag (gtag.js) - Google Analytics