为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 字符集和字符编码

字符集和字符编码

2018-03-16 10页 doc 34KB 47阅读

用户头像

is_633808

暂无简介

举报
字符集和字符编码字符集和字符编码 Unicode 编编方式 Unicode编编编编编编编编编编编编编编编编编编编编编编编编,一、万国、一,是一在算机上使用的字 符。它编编编编编编编编编编编编编编编编编编编编编编言中的个字符定了一并且唯一的每每二制编编编编编编编编编编编,以足跨言、跨平台行文本。编编编编编编编 Unicode是国编编编制定的可以容世界上所有文字和符号的字符方案。编编编编编编编编编编编编编编编编编编编Unicode用数字0-0x10FFFF编编编编编编编编编编编来映射些字符,最多可以容1114112编编个字符,或者有111411...
字符集和字符编码
字符集和字符编码 Unicode 编编方式 Unicode编编编编编编编编编编编编编编编编编编编编编编编编,一、万国、一,是一在算机上使用的字 符。它编编编编编编编编编编编编编编编编编编编编编编言中的个字符定了一并且唯一的每每二制编编编编编编编编编编编,以足跨言、跨平台行文本。编编编编编编编 Unicode是国编编编制定的可以容世界上所有文字和符号的字符。编编编编编编编编编编编编编编编编编编编Unicode用数字0-0x10FFFF编编编编编编编编编编编来映射些字符,最多可以容1114112编编个字符,或者有1114112编编个位。编编编编编编编编位就是可以分配字符的数字。UTF-8、UTF-16、UTF-32编编编编编都是将数字到程序数据的方案。编编编编编 通用字符集,Universal Character Set,UCS,是由ISO制定的ISO 10646,或称ISO/IEC 10646编编编编编编编编编编编编,准所定的准字符集。UCS-2编编编编用两个字,UCS-4用4编个字编编。 UCS-4编根据最高位0编编编的最高字分成2^7=128个group。个每group编编编再根据次高字分256个平面,plane,。个平面根据第每3编编编个字分256 行,row,,行有每256编编个位,cell,。group 0的平面0被称作BMP,Basic Multilingual Plane,。将UCS-4的BMP去掉前面的两个零字就得到了编编编编编UCS-2。每个平面有2^16=65536编编编个位。Unicode编划使用了17个平面,一共有17*65536=1114112编编编编个位。在Unicode 5.0.0编版本中,已定的位只有编编编编238605个,分布在平面0、平面1、平面2、平面14、平面15、平面16。其中平面15和平面16编编编编编编上只是定了两个各占65534编编编编编编编个位的用区,Private Use Area编编,,分是0xF0000-0xFFFFD和0x100000-0x10FFFD编编编编编编编。所用区,就是保留大家放自定字符的区域,可以写编编编编编编编编编编编编编编编编编编PUA。 如前所述在Unicode 5.0.0版本中,238605-65534*2-6400-2408=99089。余下的99089个已定位分布在平面编编编编编编编编0、平面1、平面2和平面14编编编编上,它着Unicode编目前定的99089个字符,其中包括71226编编编个字。 实实方式 在Unicode编“”编编中:字字的数字是23383。在Unicode编编编编编编编编编中,我有很多方式将数字23383表示成程序中的数据,包括:UTF-8、UTF-16、UTF-32。UTF“是UCS Transformation Format”编编编编编编编编的写,可以翻成Unicode编编编编编编编编编字符集格式,即怎将Unicode定的数字成程序数据。例如,编编编“编”编编字的数字是0x6c49和0x5b57编编编编,而的程序数据是: BYTE data_utf8[] = {0xE6, 0xB1======-, 0x89, 0xE5, 0xAD, 0x97}; // UTF-8实实   data_utf16[] = {0x6c49, 0x5b57}; // UTF-16实实 DWORD data_utf32[] = {0x6c49, 0x5b57}; // UTF-32实实 “编”字的UTF-8编编需要6编“编”编个字。字的UTF-16编编需要两个WORD,大小是4个字。字的编“编”编UTF-32编编需要两个DWORD,大小是8编编编编编编编个字。根据字序的不同,UTF-16编编编可以被UTF-16LE或UTF-16BE,UTF-32编编编可以被UTF-32LE或UTF-32BE。、 UTF-8 UTF-8编编编编编编编编编编编编编编编编编编的特点是不同范的字符使用不同度的。 Unicode编编(16编制)?  UTF-8 编编字流(编编二制) 000000 - 00007F  ?0xxxxxxx //平面0   000080 - 0007FF  ?110xxxxx 10xxxxxx //平面0   000800 - 00FFFF  ?1110xxxx 10xxxxxx 10xxxxxx //平面0 010000 - 10FFFF  ?11110xxx 10xxxxxx 10xxxxxx 10xxxxxx //平面1~16 Unicode编编的最大位0x10FFFF也只有21位。 例1,“实”字的Unicode实实是0x6C49。0x6C49在0x0800-0xFFFF之实~使用用3字实了,1110xxxx 10xxxxxx 10xxxxxx。将0x6C49写成二实制是,0110 1100 0100 1001~ 用实比特流依次代替模板中的个x~得到,11100110 10110001 10001001~即E6 B1 89。 例2,Unicode实实0x20C30在0x010000-0x10FFFF之实~使用用4字实模板了,11110xxx 10xxxxxx 10xxxxxx 10xxxxxx。将0x20C30写成21位二实制字;不足数21位就在前面实0,,0 0010 0000 1100 0011 0000~用实比特流依次代替模板中的个x~得到,11110000 10100000 10110000 10110000~即F0 A0 B0 B0。 UTF16 如果U<0x10000~U的UTF-16实实就是U实实的16位无符整;实实实便~下文号数写将16位无符整实作号数WORD,。 如果U?0x10000~我实先实算U'=U-0x10000~然后将U'写成二实制形式,yyyy yyyy yyxx xxxx xxxx~U的UTF-16实实;二实制,就是,110110yyyyyyyyyy 110111xxxxxxxxxx。 编编什U'可以被写成20编编编编个二制位,Unicode编编编的最大位是0x10ffff,减去0x10000后,U'编编的最大是0xfffff,所以肯定可以用20个二制编编位表示。 例如:Unicode编编0x20C30,减去0x10000后,得到0x10C30编编编编,写成二制是:0001 0000 1100 0011 0000。用前10位依次替代模板中的y,用后10位依次替代模板中的x,就得到:1101100001000011 1101110000110000,即0xD843 0xDC30。 编了将一个WORD的UTF-16编编与两个WORD的UTF-16编编编编编区分来,Unicode编编编编编编的者将0xD800-0xDFFF编编编编编保留下来,并称代理区,Surrogate,: D800 DB7F  ?High Surrogates  高位替代?   DB80 DBFF  ?High Private Use Surrogates  高位实用替代?   DC00 DFFF  ?Low Surrogates  低位替代? 高位替代就是指实范实的实位是个两个WORD的UTF-16实实的第一个WORD。低位替代就是指实范实的实位是个两个WORD的UTF-16实实的第二个WORD。 如果一个字符的UTF-16编编的第一个WORD在0xDB80到0xDBFF编编编编编编之,那它的Unicode编编编编编编编编编编编编编编在什范内,我知道第二个WORD编编编编的取范是0xDC00-0xDFFF,所以个字符的编编编编编UTF-16编编编编编编范是0xDB80 0xDC00到0xDBFF 0xDFFF编编编。我将个范写成二制:编编编编编编编   1101101110000000 11011100 00000000 - 1101101111111111 1101111111111111   按照的相反编编编编编编编编,取出高低WORD步的后10位,并拼在一起,得到 1110 0000 0000 0000 0000 - 1111 1111 1111 1111 1111 即0xe0000-0xfffff编编编编编编,按照的相反再加上0x10000步,得到0xf0000-0x10ffff编编编。就是UTF-16编编的第一个WORD在0xdb80到0xdbff编编之的Unicode编编编编编编编范,即平面15和平面16编。因Unicode编准将平面15和平面16编编编编编编编都作用区,所以0xDB80到0xDBFF编之的保留位被称作高位用替代。编编编编编编编编编编编编 字实序   根据字实序的不同~UTF-16可以被实实实UTF-16LE或UTF-16BE~UTF-32可以被实实实UTF-32LE或UTF-32BE。例如,   Unicode实实  ?UTF-16LE  ?UTF-16BE  ?UTF32-LE  ?UTF32-BE  0x006C49  ?49 6C  ?6C 49  ?49 6C 00 00  ?00 00 6C 49 0x020C30  ?43 D8 30 DC  ?D8 43 DC 30  ?30 0C 02 00  ?00 02 0C 30非Unicode实境 在非 Unicode 编编编编境下,由于不同国家和地区采用的字符集不一致,很可能出无法正常示所有字符的情况。编编编编编编编编编编微编公司使用了代表的技来渡性的部编编编编编编编编编编编编编编分解决一,即通指定的表将非编编编编编编编编编编编编编编编编 Unicode 编编编编编编编的字符同一字符的系内部使用的编编编编编编编编编编 Unicode 编编。XML 及其子集HTML 采用UTF-8作 编编编编编编编编编编编编编准字集,理上我可以在各支持XML编准的编编器上示任何地区文字的编编编编编编编编编网编,只要编编本身安装有合适的字体即可。 综述 实于中文而言~Unicode 16实实里面已实包含了GB18030 里面的所有实字;27484个字,~目前Unicode实准准实把康熙字典的所有实字放入到Unicode 32bit实实中。 Unicode实展自ASCII字元集。在实格的ASCII中~每字元用个7位元表示~或者实实上普遍使用的每字元有8位元实~而Unicode使用全16位元字元集。实使得Unicode能实表示世界上所有的实实言中可能用於实实通实的字元、象形文字和其他符。写号 先天被即ANSI束实的 C 程序实实实言通实实实字元集的支持支持来Unicode。 基本上~实算机只是实理字。实指定一字~实存字母或其他字符。实实实可能使数它个数来两 用相同的字代表不同的字符~或使用不同的字代表相同的字符。任何一台特定的实数两个数 算机;特实是服实器,都需要支持实多不同的实实~但是~不实什实实候据通实不同的实实或平台之数 实~那些据实有实的危实。数会坏 ANSI unicode和ansi编编编编编编编编编都是字符代的一表示形式。   使算机支持更多言,通常使用编编编编编编编编编编编编编编编编 0x80~0xFF 编编 范的2 个字编来表示 1 个字符。 不同的家和地制定了不同的实准~由此实生了 国区GB2312, BIG5, JIS 等各自的实实实准。实些使用 2 个来个称字实代表一字符的各实实字延伸实实方式~实 ANSI 实实。在实中文系实下体~ANSI 实实代表 GB2312 实实~在日文操作系实下~ANSI 实实代表 JIS 实实。 不同 ANSI 实实之实互不兼容~信息在实实交流实~无法于实实言的文字~存实在同当国将属两 一段 ANSI 实实的文本中。 字符集 字符集(Character set)编编编编编编编编编是多个字符的集合,字符集多,个字符集包含每的字符个数不同,常字符集名称:编编编编编编编ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。 字符实实 编编编编编编编编编编编编编编编编编编字母和符号行的二制代称字符代,Character Code编编编,。算机中常用的字符有编编编ASCII编,美国准信息交编编编编编编编,和EBCDIC编编编编,展的BCD编编编编交,。 GB2312编编 GB 2312是一个编体中文字符集,由6763编编编个常用字和682编编编个全角的非字字符成。首先构造一个编编编编编编编编编94行94编编编“”编“编”编列的方,一行称一个每每区,一列称一个位。 如第一个字啊出在第编“”编编编16区的第1编编位上,其区位1601编编编编编编编。由于区和位的取范都是在编编编编1 94编编编编编编编编编编编编编编编编编编编‘编’编之,的范同西文的存表示冲突。例如字珀在 GB2312编编中的区位7174编编编编编编,其两字表示形式71,74‘,而两个西文字符GJ’编编编编的存也是71,74编编编编编编编编编编编编编编编编编编编编编编编编编。冲突将致在解到底表示的是一个字是 两个西文字符将无法判断。 GB2312编编编用两个字(8位2编制)编编编编编编编编编编编编编编表示一个字,所以理上最多可以表示256×256=65536编编编编编编编编编编编编编编编编编编编编编编编编编编编编编个字。但方式也在中国行得通,如果您的网使用的GB2312编编编编编编编编编编编编编编编编编编编编编编编编编编编编编,那很多外国人在你的网就可能无法正常示,因其编编器不支持GB2312编编。 Unicode编编 Unicode编编编编编编编编编编编编编编编编编编编固然一了方式,但是它的效率不高,比如UCS-4(Unicode编编的准之一)编定用4编编编编编编编编编编编编编编编编编编编编编编编编编个字存一个符号,那个英文字母前都必然有三个字是每0编编编编编,存和编编编编编编编编编来都很耗源。 UTF-8编编 编了提高Unicode编编编编编编编编编编编的效率,于是就出了UTF-8编编。UTF-8可以根据不同的符号自的短。比如英文字母可以只用编编编编编编编编编编编编编编编编编编编1编编“编”编编个字就了。字的Unicode编编是U+00006C49,然后把U+00006C49编通UTF-8编编编编编编编编编编编编器行,最后出的UTF-8编编是E6B189。 wchar_t wchar_t是C/C++的字符据实型~是一实实展的字符存实方式~数wchar_t实型主要用在实化程国序的实实中~但不等同于它unicode实实。unicode实实的字符一般以wchar_t实型存实。char是8位字符实型~最多只能包含256实字符~实多外文字符集所含的字符目超实数256个~char型无法表示。   wchar_t数据实型一般实16位或32位~但不同的C或C++实有不同的实定~如GNU Libc[1]实定wchar_t实32位~实之~wchar_t所能表示的字符实超数char型。 使用: #include #include using namespace std; void main() {   locale loc( "chs" );//编“编”编定区域置中文方式   wcout.imbue( loc );//编编编编编入中文字符入方式   wchar_t str[]=L"中国";//编编编编编编编编编定字符数,注意L是大写   wcout< #include using namespace std; char *W2C(wchar_t , char c_cn[2]);void main() { wchar_t w_cn = '中'; char c_cn[2] = {'0'}; printf(c_cn); printf("\n"); W2C(w_cn, c_cn); printf(c_cn); system("pause");} char *W2C(wchar_t w_cn, char c_cn[2]) { c_cn[0] = w_cn >> 8; c_cn[1] = w_cn; c_cn[2] = '\0'; return c_cn; }
/
本文档为【字符集和字符编码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索