Excel函数——ANSI字符集与Code、Char、Asc函数

论坛 期权论坛 期权     
Giser的办公自动化之路   2019-7-29 00:41   2978   0
小叙背景
Windows系统下,默认的字符集为ANSI,该字符编码方式在不同语言环境下采用不同的编码方案,在中文系统下ANSI编码是GBK。
ANSI由ASCII扩展而来,ANSI下无论何种具体的编码方案,其前128个编码均为固定ASCII字符,这128个字符为英文环境下的大小写字母、常用符号与控制符。
◆◆Code与 Char
◆◆
Code(text)返回文本字符串中第一个字符的数字代码。
Char(number)用于返回对应于数字代码的字符。
返回的代码或字符对应于计算机当前使用的字符集(ANSI),在中文环境下即是GBK字符集。两个函数在ANSI字符集下是可以互相转换的,但是当遇到Unicode字符时会出现问题。
两个函数的实际意义一般是用作辅助字符串处理,具体啥用处呢?
举个栗子曾经在QQ上见网友@六号(355832828)、@1661907132讨论QQ表情字符是如何被QQ识别的,对此博主进行了分析与解惑。
问题是这样的:
复制一个表情
粘贴到别处,你会发现它是“/羊驼”。但是,在QQ输入框里敲进“/羊驼”,发现它并不能被QQ识别,发送出去的是输入的文字,即“/羊驼”。
解析是这样的:
博主认为(复制的)QQ表情的真实值“/羊驼”中应该是存在不可见的控制字符的,而这个字符应该在该字符串的首位。
所以用Code函数试验了一下,发现它是一个ASCII值为20的控制符(具体是什么字符可以自己去翻ASCII码表)。在Excel中用=CHAR(20)&"/羊驼"拼出一个字符串,复制一下,在QQ粘贴便是羊驼的表情了。

题外话:
受这个故事的启发,博主对在处理ArcGis标注时字符前的空格会被标注引擎“吃掉”这件事有了这样一个想法——是否可以在标注字符前加入不可见控制符,避免空格被“吃掉”?试验结果是不可以,因为控制字符会显示为“口”。那么,中文下的空格会不会被吃掉呢?测试可行,VBS下表示中文空格用chr(41377)。
再举两个Case1
如果在Excel中进行了硬换行,先要删除换行符,除了替换框用小键盘Alt+10键入进行替换外,还可以使用=SUBSTITUTE(A3,CHAR(10),"")进行函数处理,这里Char(10)便辅助输入了回车符。

Case2
使用Excel 的SUBSTITUTE函数进行替换操作时,被替换(第2参)与替换为(第3参)的字符串需要使用英文的双引号("")包裹,如果这两个参数就是引号呢?如下图使用Char(34)辅助输入有没有很爽快?

◆◆ASC◆◆
Asc(text)对于双字节字符集 (DBCS) 语言(中文就是),该函数将全角(双字节)字符转换成半角(单字节)字符。
实际用处呢就是如下图,有时候一些摸不着头脑的队友录入时使用了全角竟不自知,对于他们的数据可以使用asc拯救一下。


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP