乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 97|回复: 19

[编程交流] Ascii和(vl字符串elt)给出

[复制链接]

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:13:44 | 显示全部楼层 |阅读模式
我想编写一个lisp,从模型空间读取文本并替换其中的一些字符。对于这项工作,我迭代每个字符并获取每个字符的Ascii码,然后在if-else中进行替换。在某些情况下,它会得到错误的答案。例如,字符“Þ”(拉丁文大写字母thorn)(Ascii代码:222或十六进制=\U+00DE)。
(vl string elt“Þ”0)和(Ascii“Þ”)命令都给出了92,这是Ascii代码的结果
我使用doslib,但同样的问题也存在。
有人知道问题出在哪里吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:17:36 | 显示全部楼层
你确定测试正确吗?
 
为了我:
  1. _$ (ascii "Þ")
  2. 222
回复

使用道具 举报

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:21:43 | 显示全部楼层
也许我有点奇怪。我试过XP SP3和win7(64),Acad2009、Acad2012和2011都给了我:
命令:(ascii“Þ”)
92
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:25:42 | 显示全部楼层
如果通过VLIDE控制台进行测试,会发生什么?
回复

使用道具 举报

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:27:59 | 显示全部楼层
我真的很困惑:
 
_$Command:(ascii“Þ”)
92

222
92
_$(Ascii“Þ”)
222
_$(Ascii“Þ”)
222
_$(Ascii“Þ”)
222
在第一次运行中,VLIDE也感到困惑,在后来的运行中,它得到了真实的答案。
 
当我从charmap粘贴时,char变成问号并返回等价的ascii码,即63
_$(ascii?“”)
63
仍然在命令提示符中,显示为92。
我安装了第二种语言。这是原因吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:32:11 | 显示全部楼层
首先,由于LISP不区分大小写,因此(Ascii)中的大写字母不会有任何区别。
 
现在:
此结果是因为您也将“Command:”复制到控制台,该命令被解释为空符号:
 
  1. _$ Command: (ascii "Þ")
  2. nil
  3. 222

 
  1. _$ Command:
  2. nil

 
不过,我不确定ASCII 92(反斜杠“\”)代码来自哪里。
 
至于:
 
  1. _$ (ascii "?")
  2. 63
63只是问号的ASCII码。LISP只能处理ASCII字符,因此复制到控制台中的任何Unicode字符都将转换为问号。
回复

使用道具 举报

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:33:58 | 显示全部楼层
您的命令提示符中是否也有该命令?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:36:23 | 显示全部楼层
  1. Command: (ascii "Þ")
  2. 222
回复

使用道具 举报

3

主题

15

帖子

12

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 08:39:11 | 显示全部楼层
如果我在下面的代码中遇到此类问题(我指的是这个字符和其他一些字符),txt1和txt2给出了不同的答案:
  1. (setq item (ssname sset i))
  2. (setq ed (entget item))
  3. (setq VlObj (vlax-ename->vla-object item))
  4. (setq txt2 (vla-get-textstring VlObj))
  5. (setq txt1 (cdr(assoc 1 ed)))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 08:42:53 | 显示全部楼层
是的,有一个已知的错误,扩展的ASCII和Unicode符号将替换为问号“?”使用VLA对象的TextString属性检索文本内容时。
 
当文本对象包含此类字符时,请始终使用DXF组码。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-9 09:03 , Processed in 1.083611 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表