一篇文章了解IRIS/Caché编码方案
一直以来,编码问题像幽灵一般,不少开发人员都受过它的困扰。
试想你请求一个数据,却得到一堆乱码,丈二和尚摸不着头脑。有同事质疑你的数据是乱码,虽然你很确定传了UTF-8 ,却也无法自证清白,更别说帮同事 debug 了。
有时,靠着百度和一手瞎调的手艺,乱码也能解决。尽管如此,还是很羡慕那些骨灰级程序员。为什么他们每次都能犀利地指出问题,并快速修复呢?原因在于,他们早就把编码问题背后的各种来龙去脉搞清楚了。
ASCII
标准
ASCII码,使用7 位二进制数(最高位为0)来表示所有的大写和小写字母,数字0到9、半角标点符号,以及在英语中使用的特殊控制符号。
最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母a的编码是97,小写字母z的编码是122。
在IRIS/Caché中获取字符ASCII码与二进制字符串,如下代码示例:
USER>w $a("a")
97
USER>w ##class(M.Code).LogicalToDisplay(97)
10000110
经过如下二进制转十进制计算可得出 1+32+64 = 97
2**0 + 2**5 + 2**6 = 97
Unicode
GB2312、GBK与GB18030都是中文编码字符集。

.png)
.png)

