“穿孔卡的每一列可用来记录一个字符,包括从0到9的数字和26个英文字母,以及若干种符号,如等号,百分号等。每列记录一个字符,整个卡片共可以记录80个字符。”
“字符通过打孔实现,某列如果要表达一个数字,直接在第0行到第9行的对应行穿孔。如果某列要表达一个英文字母,则需要高区和数字区同时打孔。通常顶端还会印制该列的取值作为参考,具体方案请大家翻到资料附录2。”
穿孔卡片的每一列都能够存储1个英文字母,其方案为: 12-1 a 11-1 j 0-1 12-2 b 11-2 k 0-2 s 12-3 c 11-3 l 0-3 t 12-4 d 11-4 0-4 u 12-5 e 11-5 n 0-5 v 12-6 f 11-6 o 0-6 12-7 g 11-7 0-7 x 12-8 h 11-8 q 0-8 y 12-9 i 11-9 r 0-9 z
“三行区上打孔,搭配1-9数字行打孔,共有3x9=27中方案,除去0-1位置表示特殊符号‘斜线’,刚好能表示26个字母。有意思的是,之所以用0-1表示斜线,则是因为整个方案中,就只有这个编码两个孔的距离最近,技术实现难度较大。此外,其他的特殊符号则可以用每列穿3个孔的若干方案解决。霍勒里思代码里仅用了8号孔作为搭配的孔,但这同时也揭示了,3孔编码在技术上是可能的。”
“之所以提到3孔编码,是考虑到中文编码的问题。”
这时会场出现了不少窃窃私语的声音。中文的编码是元老院应用穿孔卡的一大问题。当年穿孔卡计算机没有在国内自行生产,用途也不广泛,实际并无标准的中文编码方法。
穿孔卡比起元老们熟知的数据存储载体,容量实在小得可怜,每张187x83的卡片只能存80个字符,还只是英文字母。如果要是政府或者商务的业务处理也就罢了,大不了多用标准编号,比如几年前司凯德和洪璜楠力推的国家标准代码体系,终于有了用武之地。
仅就眼下人口普查的需求来说,性别、籍贯、出生地、出生时间、现居所、文化水平、家庭成分等问题其实都可以很容易地通过编码解决,过去18位身份证上面仅用了6位就表示了全国每个人的出生地。原因很简单,命中每一个编码的人都很多,编制编码表是合适的。学过数据库的人画个er图就很容易发现本来就应该这么做。但是唯有一个字段,就是姓名,永远也绕不过中文编码的问题。人口普查表各字段的具体设计工作可以丢给民生省的人,可是这中文编码必须现在解决。
“其实中文编码问题不难解决,问题是占用空间太大。”
“1980年颁布的《信息交换用汉字编码字符集》,通称gb2312编码,不仅仅规定了汉字在计算机上的表示方法,其实也定义了一套使用4位十进制数字表示汉字的方法,就是区位码。区位码收录了一级汉字3755个,二级汉字3008个,符号682个,基本满足当前需求。所以最简单的中文编码方法就是每4列编码一个汉字,大家以前高考的时候都涂过自己的姓名,当时用的就是区位码。”
“目前邮电部在全岛的电报系统已经基本铺设完成,电报员也培训了好几批。我看是不是直接用我们的标准中文电码更方便?人手也可以通用。”这时一直没怎么发言的绍宗开口了。
“区位码在每级汉字内部排序是按照拼音顺序,不怎么用培训吧。反而是标准电码是按部首排序的,实际上比掌握区位码难得多。”