utf
- 格式:ppt
- 大小:6.38 MB
- 文档页数:60


字符编码(1)——Unicode,utf-8字符编码编码是⼀个将⼀组Unicode字符转换业个字节序列的过程。
⽽解码是将⼀个编码字节序列转换为⼀组Unicode字符的过程。
Unicode字符是什么?Unicode字符集可以简写为UCS,也就是Unicode charactor setUnicode编码是国际组织制定的可以容纳世界上所有⽂字和符号的字符编码⽅案。
它通过0到0x10FFFF来映射字符,最多可容纳1114112个字符(16进制的10FFFF的值是1114111,然后加⼀个0x000000就是1114112个)。
可以看⼀下1114112的⼆进制表⽰形式为:1 0001 00000000 00000000UTF是什么?UTF是Unicode转换格式的意思,是UCS Transformation Format的缩写。
Utf-8UTF-8以字节为单位对Unicode进⾏编码。
utf-8特点是对不同范围的字符⽤不同长度的编码。
从Unicode到UTF-8的编码⽅式如下:Unicode编码(16进制) ║ UTF-8 字节流(⼆进制)000000 - 00007F ║ 0xxxxxxx000080 - 0007FF ║ 110xxxxx 10xxxxxx000800 - 00FFFF ║ 1110xxxx 10xxxxxx 10xxxxxx010000 - 10FFFF ║ 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx例如:“赵”这个字的Unicode编码(16进制表⽰⽅法)是:8d 75这个编码在.net中可以通过ToString()⽅法来实现。
为了进⾏后边的说明。
这⾥先给出测试⽤的转换⽅法:public static class CharSetHelper{public static string TransCoding(this int iValue,eTrans eType){return Convert.ToString(iValue, (int)eType);}public static string GetCorrectCoding(this string selfChar, Encoding encoding, eTrans eType){int iUnicode = (int)char.Parse(selfChar);return iUnicode.TransCoding(eType);}}public enum eTrans{Binary=2,Octonary=8,Decimal=10,Hexadecimal=16}⼀个枚举,⽤于枚举数的进制,⼀个从字串转换到特定的字符编码,并以指定进制表⽰的⽅法。
utf8、utf16、utf32之间的格式这篇百度百科中讲解了utf8的格式、utf16的格式。
utf8的编码格式:Unicode编码(⼗六进制) UTF-8 字节流(⼆进制)000000-00007F0xxxxxxx000080-0007FF110xxxxx 10xxxxxx000800-00FFFF1110xxxx 10xxxxxx 10xxxxxx11110xxx 10xxxxxx 10xxxxxx 10xxxxxx010000-10FFFF UTF-8的特点是对不同范围的字符使⽤不同长度的编码。
对于0x00-0x7F之间的字符,UTF-8编码与完全相同。
UTF-8编码的最⼤长度是4个字节。
从上表可以看出,4字节模板有21个x,即可以容纳21位⼆进制数字。
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的编码格式:D800-DB7F High Surrogates⾼位替代DB80-DBFF High Private Use Surrogates⾼位专⽤替代DC00-DFFF Low Surrogates低位替代编码以16位⽆符号整数为单位。
utf-8编码介绍-回复标题:深入理解UTF-8编码一、引言在计算机领域,字符编码是一个非常重要的概念。
它是指将字符集中的字符映射到二进制数字系统的一种方式。
而在众多的字符编码中,UTF-8编码是最为常见的一种。
本文将详细介绍UTF-8编码的概念、特点以及工作原理。
二、UTF-8编码的概念UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode 的可变长度字符编码,由Ken Thompson于1992年创建。
它可以用来表示Unicode标准中的任何字符,并且兼容ASCII编码。
三、UTF-8编码的特点1. 变长编码:UTF-8编码是变长的,它可以使用1至4个字节来表示一个字符。
对于ASCII字符,UTF-8编码与ASCII编码完全相同。
2. 向后兼容ASCII:由于ASCII字符只需要1个字节来表示,所以所有的ASCII字符都可以直接用UTF-8编码表示,这使得UTF-8编码具有向后兼容ASCII的优点。
3. 无字节顺序问题:UTF-8编码采用字节顺序标记(BOM),可以确保在所有平台上都能正确解析。
四、UTF-8编码的工作原理UTF-8编码的基本思想是将Unicode码点转换为一系列的字节序列。
每个Unicode码点都对应一个唯一的UTF-8编码序列。
具体的转换规则如下:1. 对于单字节的字符(U+0000至U+007F),直接使用该字符的二进制表示作为其UTF-8编码。
2. 对于多字节的字符,首先将其转化为二进制形式,然后按照一定的规则添加前缀,得到最终的UTF-8编码。
具体来说,对于每个字节,最高位被设置为1,其余7位用于存储实际的数据。
不同长度的字符,其前缀也不同,例如2字节字符的前缀是110xxxxx,3字节字符的前缀是1110xxxx,4字节字符的前缀是11110xxx。
五、UTF-8编码的应用由于其独特的优点,UTF-8编码被广泛应用于各种场景。