A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

海~默默

黑马帝

  • 黑马币:0

  • 帖子:6

  • 精华:0

© 海~默默 黑马帝   /  2011-11-23 13:39  /  2167 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字符编码看的不是很明白!!有没有什么好的方法可以理解的更好一些!!可以讲一下吗???

5 个回复

倒序浏览
这是ASCII码
一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符  
ASCII(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值。   
用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的个人计算机都使用此码。ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩充和ASCII码。比较EBCDIC。其中95个字符可以显示。另外33个不可以显示。 标准ASCII码为7位,扩充为8位。   目前使用最广泛的西文字符集及其编码是 ASCII 字符集和 ASCII 码( ASCII 是 American Standard Code for Information Interchange 的缩写),它同时也被国际标准化组织( International Organization for Standardization, ISO )批准为国际标准。   基本的 ASCII 字符集共有 128 个字符,其中有 96 个可打印字符,包括常用的字母、数字、标点符号等,另外还有 32 个控制字符。标准 ASCII 码使用 7 个二进位对字符进行编码,对应的 ISO 标准为 ISO646 标准。下表展示了基本 ASCII 字符集及其编码:   字母和数字的 ASCII 码的记忆是非常简单的。我们只要记住了一个字母或数字的 ASCII 码(例如记住 A 为 65 , 0 的 ASCII 码为 48 ),知道相应的大小写字母之间差 32 ,就可以推算出其余字母、数字的 ASCII 码。   虽然标准 ASCII 码是 7 位编码,但由于计算机基本处理单位为字节( 1byte = 8bit ),所以一般仍以一个字节来存放一个 ASCII 字符。每一个字节中多余出来的一位(最高位)在计算机内部通常保持为 0 (在数据传输时可用作奇偶校验位)。   由于标准 ASCII 字符集字符数目有限,在实际应用中往往无法满足要求。为此,国际标准化组织又制定了 ISO2022 标准,它规定了在保持与 ISO646 兼容的前提下将 ASCII 字符集扩充为 8 位代码的统一方法。 ISO 陆续制定了一批适用于不同地区的扩充 ASCII 字符集,每种扩充 ASCII 字符集分别可以扩充 128 个字符,这些扩充字符的编码均为高位为 1 的 8 位代码(即十进制数 128~255 ),称为扩展 ASCII 码。  
 通过了解字符的存储编码,可以解决很多由编码不匹配引起的问题,比如网页乱码、邮件乱码。

还有一种使我们中文的编码,叫做GB2312.
回复 使用道具 举报
    在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。
   上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。
ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
   UTF-8就是在互联网上使用最广的一种unicode的实现方式。其他实现方式还包括UTF-16和UTF-32,不过在互联网上基本不用

世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。
可以想象,如果有一种编码,将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode,就像它的名字都表示的,这是一种所有符号的编码。
回复 使用道具 举报
现在的字符编码基本上都是ASCII码
它是一些字符的完整标识,为了更方便的使用,而不是每次都用0101的二进制表示,他们发明了一张字符与二进制的对照表。
现在也有很多新的编码表,也有不同的实现方式,都是为了更好的方便人们使用

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
转换流的字符编码:
通过子类转换流来完成:
InputStreamReader和OutputStreamWriter
在两个对象进行构造的时候可以加入字符集。
OutputStreamWriter(new FileOutputStream("utf.txt"),"UTF-8");

编码:字符串编程字节数组。
解码:字节数组编程字符串。

String s="你好";
byte[] b1=s.getBytes("GBK");
//这是一个编码的过程,码表是gbk,编码或解码的时候注意处理异常信息。
String s2=new String(b1,"GBK");
//这是解码过程。
回复 使用道具 举报
强子 黑马帝 2011-11-24 15:41:26
地板
编码表的由来
计算机只能识别二进制数据,早期由来是电信号
为了方便应用计算机,让它可以识别各个国家的文字
就将各个国家的文字用数字来表示,并一一对应兴城一张表,这就是编码表
常见的编码表
ASCII:美国标准信息交换码
用一个字节的7位可以表示
ISO8859-1:拉丁码表。欧洲码表
用一个字节的8位表示
GB2312:中国的中文编码表
GBK:中国的中文编码表升级,融合了更多的中文文字符号
Unicode:国际标准码,融合了多种文字
所有文字都用两个字节表示,java语言使用的就是unicode
UTF-8:最多用三个字节表示一个字符

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马