字符集的选择
一:背景介绍
- DICOM特定字符集(0008,0005)
此标签获得不同的值就代表使用不同的语言进行解码。
以下为多家CT厂商的(0008,0005)取值:
- 字符集:
unicode是字符集,ASCII、GB2312、GBK、GB18030既是字符集也是编码方式,UTF-8只是编码方式。
二:中文字符集介绍
- 世界通用字符集——UTF
- 中文字符集——GB2312、GBK、GB18030
字符集的详细介绍
一:UTF-8
程序是把一个字节一个字节的来读取,然后再根据字节中开头的bit标志来识别是该把1个还是两个或三个字节做为一个单元来处理.
• 0xxxxxxx——如果是这样的01串,也就是以0开头后面是啥就不用管了XX代表任意bit.就表示把一个字节做为一个单元.就跟ASCII完全一样.
• 10xxxxx 10xxxxxx——如果是这样的格式,则把两个字节当一个单元
• 1110xxxx 10xxxxxx 10xxxxxx如果是这种格式则是三个字节当一个单元.
而UTF-8由于里面有额外的标志信息,所有一个字节只能表示2的7次方128个字符,两个字节只能表示2的11次方2048个字符.而三个字节能表示2的16次方,65536个字符.
由于"汉"的编码27721大于2048了所有两个字节还不够,只能用三个字节来表示.
所有要用1110xxxx 10xxxxxx 10xxxxxx这种格式.把27721对应的二进制从左到右填充XXX符号,实际上也可以从从右到左填充,于是就出现了Big-Endian,Little-Endian的术语.Big-Endian就是从左到右,Little-Endian是从右到左.
例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 110001 001001,
用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。二:GBK
二:GB18030
GB18030-2005汉字
如下表所示,GB18030-2005收录了70244个汉字:
GB18030码位分配
GB18030编码采用单字节、双字节和四字节三种方式对字符编码。
1、单字节部分
本标准中,单字节的部分收录了GB/T 11383-1989的0x00到0x7F全部128个字符,与 ASCII 编码兼容。
2、双字节部分
第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x40 到 0xFE(不包括0x7F),与 GBK 标准兼容。本标准中,双字节的部分收录内容如下:
• GB 13000.1-1993的全部CJK统一汉字字符。
• GB 13000.1-1993的CJK兼容区挑选出来的21个汉字。
• GB 13000.1-1993中收录而GB 2312未收录的我国台湾地区使用的图形字符139个。
• GB 13000.1-1993收录的其它字符31个。
• GB 2312中的非汉字符号。
• GB 12345 的竖排标点符号19个。
• GB 2312未收录的10个小写罗马数字。
• GB 2312未收录的带音调的汉语拼音字母5个以及ɑ 和ɡ 。
• 汉字数字“〇”。
• 表意文字描述符13个。
• 对GB 13000.1-1993增补的汉字和部首/构件80个。
• 双字节编码的欧元符号。
3、四字节部分
第一个字节的值从 0x81 到 0xFE,第二个字节的值从 0x30 到 0x39,第三个字节从0x81 到 0xFE,第四个字节从 0x30 到 0x39。
本标准的四字节的部分,收录了上述双字节字符之外的,GB 13000的CJK统一汉字扩充A、CJK统一汉字扩充B和已经在GB13000中编码的我国少数民族文字的字符。
GB18030-2005最主要的变化是增加了CJK统一汉字扩充B。它还去掉了单字节编码的欧元符号0x80)。
GB18030有1611668个码位,在GB18030-2005中定义了76556个字符。随着我国汉字整理和编码研究工作的不断深入,以及国际标准ISO/IEC 10646的不断发展,GB18030所收录的字符将在新版本中增加。
4、注意
- [ISO / IEC 10646]现在禁止使用除UTF-8的最小长度编码以外的任何内容。 UTF-8允许多种不同的编码,但是当用于按照ISO 10646-1和10646-2(带有扩展名)编码Unicode字符时,只有最小限度的编码才是合法的。
- DICOM默认字符库中字符的表示形式与默认字符库,UTF-8中的[ISO / IEC 10646],[GB 18030]和[GBK]的单字节值相同。它也是7位US-ASCII编码。
- [GBK]字符集是[GB 18030]字符集的子集,该字符集受其一字节和两字节代码点的限制。在此子集中,[GBK]字符集遵循与[GB 18030]完全相同的编码规则。