确定文件的编码格式
起因是我写的代码在其他人的电脑上打不开,提示如下
在对数据集 ROW.DM 执行转码期间某些字符型数据丢失。 原因可能是数据中包含新编码中无法表示的字符,也可能是转码期间发生截断
问了下小伙伴,他们的电脑打开长这样。肯定是编码格式的问题,然后就开始找了
先查看了我引用的文件的编码格式,以下,明确是GB2312
修改文件编码
在网上查到了修改lib库编码的代码,分别试了
/*修改lib库的编码*/
Libname row 'D:\TestProject\ROWDATA' inencoding=gb2312 ;
/*修改单个文件的编码*/
libname inrow cvp 'c:\temp';
libname outrow 'c:\' outencoding='gb2312';
proc copy noclone in=inrow out=outrow; run;
上面两个都好使,单个文件好使之后又换成了修改全部的,gb2312的数据集终于成功set进来了,但是此时打开label显示乱码,说明中文还是不识别。
修改软件编码
至此,基本确认是软件的编码格式和文件的格式不符了,就找了sas软件的配置文件,在SAS安装路径下,D:\SASHome\SASFoundation\9.4
发现软件之前引用的是u8的路径,-config “D:\SASHome\SASFoundation\9.4\nls\u8\sasv9.cfg”
找对应的nls,发现里面有好几个语种,里面的encoding就是具体的编码,u8就是utf-8,euc-cn就是gb2312。
把主路径(SASHome\SASFoundation\9.4)引用的配置路径改成-config "D:\SASHome\SASFoundation\9.4\nls\zh\sasv9.cfg"就可以啦~~~