(原文链接:https://mp.weixin.qq.com/s/7fjJHnQAFOfuLdbXPloGEA)
8月25日至26日,2023年中国CDISC交流大会于北京举行,大会以“Clear Data, Clear Impact!”为主题。作为一家国际化的科技型全功能临床CRO公司,圣方医药研发受邀参与此次大会,高级统计程序员罗斯元带来题为《How invisible encoding influence data storage and display》的主题演讲,分享了关于临床试验数据背后“隐藏的编码”的相关内容。
01 什么是编码?
在计算机中,编码是将一系列字符(字母、数字、标点符号和某些符号)转换成特定格式以便有效传输或存储的过程。
“只要字符与存储/传输的数据一一对应,就可以设计无数的编码方案。”罗斯元表示,编码方案主要有单字节编码(ASCII、 Windows-1252等)、多字节编码(其中包含双字节编码GB2312、BIG 5等,以及其他编码GB18030、UNICODE等)。
ASCII编码即美国信息交换标准代码(American Standard Code for Information Interchange),是一套共有128个字符的编码,第一次公布于1967年,ASCII码对照表是世界最通用的信息交换标准。
ASCII、Windows-1252(ASCII的西欧字符集扩展)或其他任何西方编码都是单字节,单个字节只能表示256(2^8)个不同的字符,而中文的字符远不止256个,显然,任何单字节编码标准都不能满足对汉字的需求。
因此,中国发展了自己的双字节编码字符集GB2312,最多使用2个字节来表示字符。GB2312是中国政府于1981年强制实施的第一个编码,在中国大陆、新加坡广泛使用。此后,中国政府于2005年建立了GB2312的扩展GB18030,使用1-4字节可变长度编码来表示字符,共包含87887个中文字符,还将不断增加新的生僻字符。GB18030标准将于2023年8月1日起正式强制实施。
在Unicode被发明之前,有数百种字符编码,但这些早期的字符编码是有限的,不能包含足够的字符来覆盖世界上所有的语言,而且彼此之间也存在冲突。Unicode应运而生,它能够容纳世界上所有的字符,支持所有的语言信息交互、处理和显示。
02 如何进行编码?
Unicode是一种编码标准,它定义了每个字符的码位。但是如何存储和传输数据,如何编码和解码是不受限制的,因此UTF编码方案面世了。
UTF是Unicode Transformation Format的缩写,是一种从每个Unicode码点到唯一字节序列的算法映射,包含UTF-8、 UTF-16、UTF-32三种类型。
UTF-8
1到4字节可变长度编码,完全兼容ASCII,是最常用的Unicode编码方案,因为其节省空间,方便数据的存储和传输。
UTF-16
2或4字节可变长度编码。对于码位为[U+0000-U+FFFF]的Unicode字符,它们的编码与它们在Unicode中的码位相同。
UTF-32
4字节固定长度编码,任何单个字符都以4字节(32位)编码单元进行编码。它占用空间太大,所以很少使用。
03 如何处理编码错误
根据NMPA指导原则,临床试验数据相关的申报资料要求语言为中文;数据集格式要求XPT v5或更高版本;编码不限,如GB2312、UTF-8均可,但需要预先声明所使用的编码。FDA要求更为严格,语言只能是英语,数据集格式只能是XPT v5 ,编码只能是ASCII。
罗斯元介绍了向NMPA和FDA等监管部门递交临床数据时容易出现的几类编码问题:外部数据库使用不同的编码,导致文本乱码;从中文翻译成英文时发现文本混乱;不可见的代码会导致错误,包括控制字符、截断字符和乱码。
当出现编码问题时,如何解决?首先要从源头上预防问题,在整个过程中使用相同的编码,不使用不支持的字符,以正确的方式提取字符;其次如果出现问题,要及早发现错误,定位乱码;最后修复乱码,删除错误代码,将乱码转换为正确的编码。
圣方医药研发的统计编程团队致力为客户提供及时、高质量交付。截至目前,团队累计执行500多个临床试验项目,接受过50次以上国家稽查;在肿瘤、心血管、代谢等治疗领域积累了丰富的经验。团队构建的编程全流程SOP, 可覆盖不同类型项目的编程周期;配合使用自研的近20个软件工具,极大提升了项目的执行效率,可确保项目如期高质交付。
如您有统计编程相关问题,请联系我们:info@ecr-global.com