SAS:什么时候用kcompress呀?

  • 问题:如何截取ECGTPT变量中的后三个字符?

下图展示了以k开头的以及非k开头的substr函数和length函数,发现在UTF-8编码下,仅以k开头的函数能够截取成功。
在这里插入图片描述

  • 释疑(以下内容来自SAS Help)
    在这里插入图片描述
    SAS提供的字符函数和call例程可以很轻松地处理字符型数据。很多原始的SAS字符函数假定每个字符都是1个字节,这些函数可以很好地处理单字节字符集(single-byte character set SBCS)。

但是当处理双字节字符集(double-byte character set DBCS)或UTF-8这样的多字节字符集(multi-byte character set MBCS)时,这些函数和call例程很可能返回错误的结果。

为了解决这类问题,SAS引入了K函数。为了准确使用K函数,需要理解基于字节(byte-based)的偏移量和基于字符(character-based)的偏移量(offset-length)。

基于字节的偏移量假定字符的起始位置是字符串中字节的起始位置。对SBCS数据,一个字符的长度总是1个字节的长度,字符串中的第二个字符就在第2个字节处开始。由于数据和数据的编码方式不同,对多字节数据来说,第2个字节的数据,有以下几种情况:

  • 字符中的第二个字符;
  • 双字节字符的第2个字节;
  • 字符串中第一个字符的第一个字节。

基于字节的偏移量是字符串中字节的数量,基于字符的偏移量是字符串中字符所在的位置。K函数使用基于字符的偏移量。

因此,不管对于length或者是substr来说,例子中使用了k函数的才能够把每一个汉字当成一个字符处理。

那么,是否所有的字符型函数都有对应的k函数呢?这就要讲到另一个概念:I18N(internationalization)。根据函数是否能处理DBCS、MBCS或SBCS,确定了I18N的三个级别:

  • I18N 0级
    仅用于处理SBCS数据;

  • I18N 1级
    如果需要处理MBCS数据,尽量避免使用这类函数。因为在特定情境下,I18N 1级的函数无法准确处理DBMS或者MBCS数据;

  • I18N 2级
    可处理SBCS、DBCS和MBCS(UTF-8)数据。

下面展示几个常用的字符型函数,最左边为0级,中间为1级,右边为2级。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到,substr为I18N 0级。ksubstr和klength为I18N 2级。

  • 疑问

但是!!length怎么也是I18N 2级?但是code显示length和klength的处理结果明显不一样呢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/682486.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java基础29(编码算法 哈希算法 MD5 SHA—1 HMac 算法 堆成加密算法)

目录 一、编码算法 1. 常见编码 2. URL编码 3. Base64编码 4. 小结 二、哈希算法 1. 哈希碰撞 2. 常用哈希算法 MD5算法 SHA-1算法 自定义HashTools工具类 3. 哈希算法的用途 校验下载文件 存储用户密码 4. 小结 三、Hmac算法 小结: 四、对称加密…

一分钟学习数据安全——数字身份的三种模式

微软首席身份架构师金卡梅隆曾说:互联网的构建缺少一个身份层。互联网的构建方式让你无法得知所连接的人和物是什么。这限制了我们对互联网的使用,并让我们面临越来越多的危险。如果我们坐视不管,将面临迅速激增的盗窃和欺诈事件,…

无需复杂步骤,Win11用户轻松开启旧版文件资源管理器!

在Win11电脑操作中,用户可以使用到新版的文件资源管理器,但总是有各种错误、卡顿等问题的出现,所以很多用户都不喜欢新版资源管理器。接下来小编给大家介绍一个简单的方法,帮助Win11用户快速开启旧版文件资源管理器。 具体操作如下…

代码随想录算法训练营第二十五天| 216. 组合总和 III、17. 电话号码的字母组合

[LeetCode] 216. 组合总和 III [LeetCode] 216. 组合总和 III 文章解释 [LeetCode] 216. 组合总和 III 视频解释 题目: 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9每个数字 最多使用一次 返回 所有可能的有效组合的列表 。该…

Mysql 常用命令 详细大全【分步详解】

1、启动和停止MySQL服务 // 暂停服务 默认 80 net stop mysql80// 启动服务 net start mysql80// 任意地方启动 mysql 客户端的连接 mysql -u root -p 2、输入密码 3、数据库 4、DDL(Data Definition Language )数据 定义语言, 用来定义数据库对象(数…

电子电器架构 --- 智能座舱技术分类

电子电器架构 — 智能座舱技术分类 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,…

如何修改cPanel面板的语言

本周有一个客户,购买Hostease的主机, 客户购买的是Linux虚拟主机,带cPanel面板的。询问我们的在线客服,他想修改cPanel面板的默认语言。Hostease虚拟主机默认英语,客户想要修改成中文。 在cPanel面板中修改语言设置是一…

怎么看新手入门学Java?

对于新手来说,学习Java是一个既令人兴奋又可能令人畏惧的过程。Java作为一种强类型、面向对象的编程语言,它广泛应用于企业级应用、Android开发、大数据和云计算等领域。因此,Java不仅有着庞大的生态系统,还拥有稳定的市场需求&am…

curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL

source ~/.bash_profile flutter clean Command exited with code 128: git fetch --tags Standard error: 错误:RPC 失败。curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8) 错误:预期仍然需要 2737 个字节的正文 fetch-pack: unexpec…

【React篇 】React项目中常用的工具库

我们可以从项目初始化、开发、构建、检查及发布的顺序总结react项目开发常用的工具库。 首先是初始化。 初始化工程项目一般用官方维护的 create-react-app,这个工具使用起来简单便捷,但 create-react-app 的配置隐藏比较深,修改配置时搭配…

设备在线监控系统软件

在数字化、智能化的浪潮中,物联网技术正以前所未有的速度改变着我们的工作和生活方式。作为物联网技术的核心组成部分,设备在线监控系统软件的重要性日益凸显。今天,我们就来详细探讨一下HiWoo Cloud平台如何助力企业实现设备的全面监控与管理…

纯血鸿蒙开发教程:如何实现运动饮食卡片效果

开发背景 人们对健康的要求越来越高,从单纯的健康饮食到健康运动,再到两者的结合。但是,饮食和运动之间的平衡一般人很难掌握,而我们这款 APP 将饮食、运动、以及自身身体状况(如体脂、体重、内脂等)有机结…

强烈安利10款手机App!

AI视频生成:小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/ 1.听书神器——昊昊听书 昊昊听书app是一款专门为用户提供有声读物的应用程序。它不仅提供了各种类型的有声书籍,还有各种知名的电…

Hugging Face系列2:详细剖析Hugging Face网站资源——实战六类开源库

Hugging Face系列2:详细剖析Hugging Face网站资源——实战六类开源库 前言本篇摘要2. Hugging Face开源库2.1 transformers2.1.1 简介2.1.2 实战1. 文本分类2. 图像识别3. 在Pytorch和TensorFlow中使用pipeline 2.2 diffusers2.2.1 简介2.2.2 实战1. 管线2. 模型和调…

使用OpenPCDet实现VoxelNext进行训练和测试:实现NuScence数据集的全局感知结果可视化

在自动驾驶和机器人技术日益蓬勃发展的今天,3D目标检测技术成为关键的一环,它赋予机器以理解和响应周围环境的能力。本文将深入探讨如何使用开源的OpenPCDet框架训练先进的VoxelNeX模型,并在nuScenes数据集上进行训练、测试,最后实…

MYSQL8.30版本 服务开不了问题

CMD→services.msc 启动MySQL80时突然发现了问题,服务无法启动了: 解决方案1: 解决方案: 1. 找到mysql的data文件夹,将data进行备份,一定要备份! (data文件夹路径可以在mysql安装…

PS的抠图算法原理剖析 1

以这个抠tree为例子 在PS里,操作过程是让你开启R G B三个通道 分别看一下 哪一个的对比最明显 上面的图片 树叶肯定B最少 天空B富裕,所以对比最明显的就用B通道 然后使用一些奇怪的函数,把texture.bbb这张图片变成黑白,纯黑纯白 那…

LINUX系统编程:核心转储

目录 核心转储 这两个有什么区别呢? 那为什么在我们使用Core终止进程时没看见core文件呢? 那为什么这么好用的功能是被关闭的呢? 如何开启核心转储 写个除零错误验证一下 使用Core文件 核心转储 在使用信号的时候,我们发现…

事务管理AOP

通过事务操作 删除部门的时候,同时删除员工,那么如果其中有异常,那么就进行事务回滚 使用注解Trance Transactional-propagation(传播行为)

多语言接入淘宝API抓取淘宝数据库数据获取详情页信息评论数据等,打造个性化营销策略

在数字化时代,个性化营销已成为品牌与消费者建立联系的关键。淘宝API作为强大的工具,能够帮助商家深入挖掘消费者需求,实现精准营销。本文将探讨如何通过淘宝API提升营销效果,增强用户体验。 消费者洞察: 淘宝API提供丰…