1、定义
字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。
字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。
字符(Character):在计算机和电信技术中,一个字符是一个单位的字形、类字形单位或符号的基本信息。
字符是指计算机中使用的字母、数字、字和符号。
2、所占存储空间
字符>=字节
在ASCII编码中,数字、英文字母、中文汉字和符号所占用的空间(正常情况下):
一个数字占用一个字节的空间;
一个英文字母(不分大小写)占一个字节的空间;
一个中文汉字占两个字节的空间;
一个英文标点符号占一个字节的空间;
一个中文标点占两个字节的空间;
3、字符,字节,字符串
理解编码的关键,是要把字符的概念和字节的概念理解准确。这两个概念容易混淆,我们在此做一下区分:
字符:人们使用的记号,抽象意义上的一个符号。如:'1', '中','a','$','¥',……
字节:计算机中存储数据的单元,一个8位的二进制数,是一个很具体的存储空间。如:0x01,0x45,0xFA,……
至于字符串,在这里就只考虑ANSI和UNICODE两种情况:
ANSI
字符串:在内存中,如果“字符”是以ANSI编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为ANSI字符串或者多字节字符串。"中文123"(占7字节)
UNICODE
字符串:在内存中,如果“字符”是以在UNICODE中的序号存在的,那么我们称这种字符串为UNICODE字符串或者宽字节字符串。L"中文123"(占10字节)
由于不同ANSI编码所规定的标准是不相同的,因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种编码规则,才能够知道它包含了哪些“字符”。而对于UNICODE 字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。
4、字节与字符的转换(Java语言:Byte[]与String的转换)
String mString = "StringTest123"; //String变量
byte mByteOut[] = mString.getBytes(); //String转换为byte[]
String mStringOut = new String(mByteOut); //byte[]转换为String
至于,其具体的资料,可参看百度百科上的“字节”。