银行信息系统生僻字问题探究
2021-04-12马征
马征
一、信息系统字符集情况介绍
(一)字符集概述
字符是各种文字和符号的总称,包括各国文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,目前汉字字符集主要有:《信息交换用汉字编码字符集 基本集》(GB2312-1980),《汉字内码扩展规范》(GBK),《信息技术 信息交换用汉字编码字符集 基本集的扩充》(GB18030-2000),《信息技术 中文编码字符集》(GB18030-2005),《信息技术 通用多八位编码字符集(UCS)》(GB13000-2010)。国外软件系统考虑跨语言、跨平台处理需求,常用的字符集为Unicode,在操作系统、应用程序中广泛应用。从执行效力看,Unicode与GBK为行业性规范,GB2312-1980、GB13000-2010为国家推荐性标准,GB18030-2000和GB18030-2005为国家强制性标准。GB18030-2005现已代替GB18030-2000,其与GB18030-2000相同部分为强制性。从兼容、支持角度看,GB18030-2005能够与GB2312-1980完全兼容,与GBK基本兼容,支持Unicode 4.0的全部统一汉字。GB13000-2010等同于国际标准化组织(ISO)发布的通用多八位编码字符集(ISO/IEC 10646:2003)和多语言软件制造商联盟发布的统一码(Unicode 4.0)。详细信息见表1。
(二)银行字符集采用情况
以某省城市商业银行和农联社的487个信息系统为样本,统计其所涉操作系统、数据库、对外接口及应用(包括中间件、报文传输、源代码)字符集情况。从统计结果看,操作系统、数据库、对外接口及应用采用的字符集主要是Unicode、GBK,少数为GB2312、GB18030,且支持GB18030的全部为Linux平台,行业性规范成为应用主流,国家标准反而应用较少,详细情况见表2。造成这一现象的主要原因是:国际上,Unicode由大的软件制造商组成的联盟制定,具有跨语言、跨平台优势,使其成为应用主流。国内来讲,作为基础软件的Windows操作系统自带字符集还是GBK,对于GB18030-2005,Windows虽然提供了扩展支持包,却没有实现全面的支持。加之GB18030-2005的宣传、推广不足,多年下来,形成了GBK的市场应用存量与惯性,一定程度上限制了对GB18030-2005的应用。
二、生僻字原因分析
金融行业生僻字是信息系统在存储、传输、显示等过程中无法正常处理的字符,按照产生原因可划分为三种情况:一是采用不同字符集的系统交互导致部分字符无法处理。比如当采用GB18030字符集的应用与采用GBK字符集的应用交互时,由于GBK字符只有21003个,在这范围之外的字符就会无法处理。二是部分字符“一字多码”导致无法处理。“一字多码”的出现主要是因为Unicode的编码空间内存在用户自定义区(PUA),允许自定义编码来处理一些生僻字,这些生僻字后期又被Unicode正式收录,造成一个汉字既有PUA编码又有Unicode正式码的“一字多码”问题。例如“?”字,其在Unicode自定义区编码为“E863”,而其正式编码为“4DAE”。由于GB18030-2005与Unicode编码的一一对应关系,“一字多码”问题同样存在于GB18030-2005编码空间。这部分字大约有3000多个,包括GBK在1995年制定时收录的52个汉字和公安部人口信息系统中收录的方正自定义字中的大部分。三是终端设备字库和常用输入法不支持生僻字。一方面,很多终端设备字库和输入法支持的规范、标准内的字符不全,有的仅支持GBK的21003个字,有的虽然支持GB18030的4字节字符,但不全面,导致终端无法输入、显示和打印。另一方面,公安部人口信息系统中存在大约4700个生僻字,属于方正公司自定义字,需要购买方正字库获得,否则这4700个生僻字终端无法输入、显示和打印。
三、生僻字应对方法
(一)技术层面处理方法
一是按照“存量升级、增量符合”“先辅助后核心”的原则升级改造。原先使用GBK、GB2312字符集的存量系统升级为GB18030-2005字符集,扩大支持的字符集范圍;原先使用UTF-8、UTF-16编码方式但仅支持Unicode基本多语言平面(BMP)的存量系统,升级为支持Unicode全部平面。新增信息系统则强制支持GB18030-2005字符集。二是针对特殊情况个案处理。对于采用GBK字符集的DB2数据库,目前升级字符集难度较大,需要DB2厂商的开发支持,金融机构可采用传输、存储时不进行GBK转码,直接按照GB18030编码格式进行二进制存储作为过渡解决方案。对于“一字多码”问题,则是在存储环节统一转化为其Unicode正式码或其Unicode正式码对应的GB18030编码,从而实现字符编码的统一。三是升级终端字库和输入法,扩大终端支持的字符数量,解决终端生僻字的输入、显示和打印问题。
(二)业务层面处理方法
业务层面的生僻字处理主要有两个环节:一是客户信息录入环节。在征得客户同意后,商业银行业务人员通常采用拆字、拼音、繁体字代替等方法变通处理。例如通过拆字方法将客户姓名“王陹”录入为“王(耳升日)”;使用拼音将“张?”录入为“张YAN”,并在备注栏输入“张(上龙下天)”;使用繁体字将“讠永”录入为“詠”。二是客户信息校验环节。各商业银行生僻字处理方法、规则不一,导致跨行转账、绑卡等业务环节客户信息自动校验无法通过,商业银行业务人员通常采取人工干预方式处理。例如跨行来账业务因生僻字问题出现户名不符时,通过电话联系客户或向付款行发出查询,确认相同后再进行入账处理;或者要求客户临柜进行业务办理,增加社保卡、机动车驾驶证、户口簿等作为辅助核验手段。
四、生僻字应对建议
(一)加快金融业生僻字处理指南的制定
标准化、规范化的生僻字业务处理流程有助于克服各银行处理标准不一导致的识别、处理问题,也是当前条件下金融业应对生僻字问题、提升金融服务体验最直接、有效的方法。建议进一步加快金融业生僻字处理指南的制定,统一规定拆字、拼音、繁体字代替等方法的具体使用情形。整理全行业遇到的生僻字,建立生僻字替代查找库,方便一线业务人员使用,从而发挥金融行业标准的标杆和促进作用,不断提升金融服务水平与效率。
(二)循序推进金融行业字符集升级
金融行业信息系统众多,对所有信息系统进行字符集升级,涉及核心系统、柜面系统、支付平台、网银互联平台、网银及手机银行等系统,需对数以万计的代码源文件进行改动,其中的开发和测试投入成本较大,也面临一定的时间与风险考验,因此,推动金融行业信息系统字符集升级将是一个长期过程,必须坚持循序渐进原则,区分“存量系统”与“新增系统”“辅助系统”与“核心系统”,综合考量各项影响因素,合理制定推进计划,逐步完成字符集升级改造。
(三)加大国家强制标准宣传实施力度
面向开发商、行业用户开展针对性宣传,增强标准贯彻意识,落实标准为民利企的发展理念。对不符合GB18030-2005强制要求的基础软件产品,如操作系统、数据库等,应禁止核发销售许可;对已经纳入标准、拥有正式编码的字符,不得使用自定义编码,杜绝“一字多码”现象;对尚未纳入正式编码且在公民身份信息系统中已经广泛使用的自定义字符,由标准管理部门统一管理,公开自定义字符、编码对应关系,建立专门字库,供各方免费获取使用。
(四)强化部门协同一体推进
生僻字问题涉及多个部门和环节:在管理层面,生僻字问题涉及税务、电信、社保、金融、公安、工信等诸多部门;在技术层面,生僻字问题涉及操作系统、数据库、对外接口、中间件、源文件等诸多环节。单个部门、单个环节努力无法根本解决问题。建议由标准主管部门牵头组织,各行业部门根据业务场景配合协同,由点到面、由纵向到横向一体推进,才能从根本上解决生僻字问题。
(责任编辑 刘 阳;校对 WY,LY)