UTF-1是一种将ISO 10646 / Unicode转化成字节流的方式。由于其本身的设计问题,如果自中间的一个字符开始解码,UTF-1将无法重新同步(这造成截取的困难),而且UTF-1也没办法进行可靠的字节搜索。又因为UTF-1使用的除数不是2的幂,所以转化得也相当缓慢。由于以上这些问题,UTF-1从来没有得到广泛采用,并已被UTF-8所取代。

UTF-1
语言国际
现状已废弃
分类Unicode转换格式
EASCII
变长编码
拓展自ASCII
变换/编码ISO 10646Unicode
后续UTF-8

设计

UTF-1是一个类似于UTF-8的多字节编码;一个单一的Unicode代码点可以被编码成一个、两个、三个或五个八位字节。而如同UTF-8ASCII码系列可被编码为一个八位字节,ASCII码的八位字节0X21 - 0x7E(十进制数33-126)也被用于UTF-1多字节编码;所以UTF-1不适合于许多互联网协议,包括MIME

UTF-1在其他编码里不使用C0和C1控制码-任何0x00-0X20或0x7F-0x9F的八位字节代表相应的在ISO-8859-1的编码位置(分别为U+0000-0020和U+007F-009F)。这种设计有66个八位字节的保护力求与ISO 2022兼容。

UTF-1编码系统使用190的求模运算(256-66=190),它被设计用来对完整的31位原版通用字符集(UCS-4)进行编码。相比较而言,UTF-8保护所有128个ASCII八位字节,而且需要两个跟踪字节的多字节编码才能达成这个目的,它构成对64的求模运算(8-2=6, 26=64)。BOCU-1只保护所需的兼容MIME的极小集(0x00,0X07-0X0F,0X1A-0X1B和0X20),构成对243的求模运算(256-13=243)。

编码位置 UTF-16BE UTF-16LE UTF-8 UTF-1
U+007F 007F 7F00 7F 7F
U+0080 0080 8000 C280 80
U+009F 009F 9F00 C29F 9F
U+00A0 00A0 A000 C2A0 A0A0
U+00BF 00BF BF00 C2BF A0BF
U+00C0 00C0 C000 C380 A0C0
U+00FF 00FF FF00 C3BF A0FF
U+0100 0100 0001 C480 A121
U+015D 015D 5D01 C59D A17E
U+015E 015E 5E01 C59E A1A0
U+01BD 01BD BD01 C6BD A1FF
U+01BE 01BE BE01 C6BE A221
U+07FF 07FF FF07 DFBF AA72
U+0800 0800 0008 E0A080 AA73
U+0FFF 0FFF FF0F E0BFBF B548
U+1000 1000 0010 E18080 B549
U+4015 4015 1540 E48095 F5FF
U+4016 4016 1640 E48096 F62121
U+D7FF D7FF FFD7 ED9FBF F72FC3
U+E000 E000 00E0 EE8080 F73A79
U+F8FF F8FF FFF8 EFA3BF F75C3C
U+FDD0 FDD0 D0FD EFB790 F762BA
U+FDEF FDEF EFFD EFB7AF F762D9
U+FEFF FEFF FFFE EFBBBF F7644C
U+FFFD FFFD FDFF EFBFBD F765AD
U+FFFE FFFE FEFF EFBFBE F765AE
U+FFFF FFFF FFFF EFBFBF F765AF
U+10000 D800DC00 00D800DC F0908080 F765B0
U+38E2D D8A3DE2D A3D82DDE F0B8B8AD FBFFFF
U+38E2E D8A3DE2E A3D82EDE F0B8B8AE FC21212121
U+FFFFF DBBFDFFF BFDBFFDF F3BFBFBF FC2137B27A
U+100000 DBC0DC00 C0DB00DC F4808080 FC2137B27B
U+10FFFF DBFFDFFF FFDBFFDF F48FBFBF FC21396E6C

参见

参考文献

  • ISO IR 178 (PDF,256 KB,不再被使用的UTF-1规范)