上一篇,我们发现代码文件(.sas)在SAS的三种编码的编辑器间,相互不兼容。那么数据集的情况如何呢?
我们生成不同编码环境下的数据集。
在wlatin1编码下,一些特殊符号,如”‰”,在界面上显示异常。但当鼠标点击进去,或者打印出来时,显示还是正常的。
多字节字符占据1字节。这里,L变量长度是10,L3变量长度是3。
在euc-cn编码下,多字节字符占据2字节。这里,L变量长度是11,L2变量长度是16.
在utf-8编码下,多字节字符占据3字节。这里L变量长度是12,L2变量是24,L3变量是8。
我们用wlatin1的编辑器,读取另外两个数据集。因为存在一些无法兼容的值,就像上方的截图,SAS报错了。这也很容易理解,我们无法使用,超过编码范围的字符。
我们用euc-cn的编辑器,读取utf-8编码的数据集(A3)时,发生了错误。跟上一个操作类似,存在无法识别的字符。
那么,我们先把UTF-8编码的数据集的特殊字符(A3.L3)变量去掉,会如何呢?结果是能够轻松导入。因为,既不存在无法识别的字符,变量中多字节字符需要的字节数也会降低,也不存在变量长度不够用的情况。
我们用utf-8的编辑器,读取euc-cn编码的数据集(A2)时,发生了错误。因为在euc-cn编码下,L变量和L2变量需要的长度分别为11和16;而在utf-8编码下,L变量和L2变量需要的长度则是12和24。变量不够长了,将会截断。
遇到这种情况,我们需要将原来数据集变量的长度,按比例放大,使用如下代码,将变量长度扩大1.5倍。然后就可以轻松调用了。
LIBNAME XXX CVP “XXX” CVPMULTIPLIER=1.5;
总结一下。跨编码环境,调用数据集文件(.sas7bdat)时需要注意两点:
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。