正确解决一个古老的 Raize 报 rzborder.pas 错误的问题
最近偶然需要用一下 Delphi 下的 Raize,使用时报 rzborder.pas 错误。记忆中多少年前就知道这是个编码识别的问题。放狗一搜,居然现在有人说是RZ的源码有问题,不能指向RZ的源码;还有人说是源码缺失},辛辛苦苦地去一行行修改,把类似下面这种:
( { Col0: $00; Col1: $7E; Col2: $14; Col3: $08; Col4: $00 ),
改为:
( {} Col0: $00; Col1: $7E; Col2: $14; Col3: $08; Col4: $00 ),
实际上人家的源码没有任何错误,只是在中文系统下 Delphi 使用默认的GB2312编码格式把特殊字符+}错误地识别成了汉字而已。
解决方法很简单:用 Emeditor 以西欧 Windows-1252 编码页打开 rzborder.pas 文件,然后另存为带签名的 utf-8 编码格式即可。你会发现上面那行代码其实是这样的:
( {þ} Col0: $00; Col1: $7E; Col2: $14; Col3: $08; Col4: $00 ),
那个特殊字符 þ 的 16 进制编码是 FE,它后面的 } 是 7D,而汉字“”的 GB2312 编码恰好就是 16 进制的 FE7D。