解决中文md5有误?
-
检查数据
检查数据是否纯在空格,如果存在空格,可使用以下代码去空格处理。
left函数: 刪除字符串左边(开头> 的空格
right函数: 刪除字符串右边(结尾> 的空格
trim函数: 刪除字符串右边(结尾> 的空格
strip函数: 刪除字符串前后空格
compress函数: 删除字符串中所有空格
compbl函数: 将连续两个或以上的空格压缩为1个空格
-
查看系统目前编码
proc options option=encoding; run;
-
修改SAS配置文件
由于sas默认编码是gbk2312,所以需要修改sas编码。
-
进入SAS 的nls 目录,D:\Program Files\SASHome\SASFoundation\9.4\nls,查看是否是多语言,目前如下目录有多个语言可供选择。
-
查看系统默认选择的语言。进入目录 D:\Program Files\SASHome\SASFoundation\9.4,查看文件 sasv9.cfg ,系统默认为zh。
-
修改zh为u8:
重启sas并运行。(如上显示,填写-Rlang,可以让sas运行R代码,代码见后续部分。)
执行代码:
data a;
set c;
y = put(md5(name),$hex32.);
run;
R代码运行
- 修改如上配置,查看sas是否支持R代码运行。
proc options restrict;
run;
###输出
SAS 选项受您的软件安装点管理员限制
您的软件安装点管理员尚未限定任何 SAS 选项。
- 执行代码:
proc options option=Rlang;
run;
### 输出:
SAS (R) PROPRIETARY SOFTWARE RELEASE 9.4 TS1M2
RLANG 允许 SAS 执行 R 语言语句。
- 执行md5加密:
proc iml;
submit / R;
library(digest)
digest(enc2utf8("李四"),algo="md5", serialize=F)
endsubmit;
quit;
- END