前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在SAS的三种编码间来去自如:wlatin1,euc-cn和utf-8 【1代码篇】

如何在SAS的三种编码间来去自如:wlatin1,euc-cn和utf-8 【1代码篇】

作者头像
SAS编程未来
修改2023-03-02 21:38:10
1.3K0
修改2023-03-02 21:38:10
举报
文章被收录于专栏:SASSAS

在日常工作中,常用的SAS语言环境有三个,即英文(wlatin1 western),简体中文(euc-cn),Unicode(utf-8)。这三个语言环境产生的代码文件(.sas)和数据集文件(.sas7b),也将使用相应的编码。

有时候,我们在一个语言环境下使用另一个编码的代码文件、数据集文件,会产生错误或乱码。而且,一旦保存,乱码将保存,不可逆!非常头疼。

那么,如何在不同编码间,自由转换呢?

首先,我们需要掌握两个原理:

  1. 不同编码涵盖的字符量:utf8>euc-cn>wlatin1。这表明,从utf8往下转码时。只有在字符适用时才成功。
  2. 不同编码多字节字符占据的字节数量:utf8(3 bytes)>euc-cn(2 bytes)>wlatin1(1 byte)。这表明,从wlatin1往上转码时,只有在变量长度在新编码下足够时,才成功。

我们先来转换代码文件。在下面的代码中,l3变量存在euc-cn不能识别的字符,l2变量存在wlatin1不能识别的字符,l变量的字符,三种编码均能识别。

散点图 低可信度描述已自动生成
散点图 低可信度描述已自动生成
图片包含 应用程序 描述已自动生成
图片包含 应用程序 描述已自动生成
图片包含 文本 描述已自动生成
图片包含 文本 描述已自动生成

当我们保存.sas代码文件后会发现,不能识别的字符,会自动忽略。

那么,当字符涵盖在编码中时,是不是就万事大吉了呢?我们接下来试试,用一个编码的SAS软件,来打开另一个编码的代码。

当我们用wlatin1打开另外两个软件时,会发现大部分都变成乱码了。很显然,wlatin1无法识别这些字符。

wlatin1打开其他两种编码的.sas文件:

图片包含 图表 描述已自动生成
图片包含 图表 描述已自动生成

euc-cn打开其他两种编码的.sas文件:

图片包含 图形用户界面 描述已自动生成
图片包含 图形用户界面 描述已自动生成
文本 低可信度描述已自动生成
文本 低可信度描述已自动生成

utf8打开其他两种编码的.sas文件:

图表, 散点图 描述已自动生成
图表, 散点图 描述已自动生成

由此可见。不论字符能不能识别。只要用sas编辑器,打开其他编码的.sas文件。就会产生乱码。而且不可逆。这是因为文本文档本身会有一个编码。

要想实现代码文件在不同编码间转换。

  1. 使用复制粘贴法,将代码copy到新的编辑器。
  2. 使用代码,将,sas文件导入(infile+input),再导出成新编码下的.sas文件(file+put)

本文系转载,前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系?cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com