【SAS】中文乱码问题,根本原因!暴击!

确定文件的编码格式

起因是我写的代码在其他人的电脑上打不开,提示如下

在对数据集 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"就可以啦~~~
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值