明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4548|回复: 20

[经验] autoCAD2021支持unicode是如何实现的

  [复制链接]
发表于 2021-3-17 13:02:17 | 显示全部楼层 |阅读模式
本帖最后由 baitang36 于 2021-3-17 16:23 编辑

AutoCAD从2021版开始支持unicode,这功能有啥用呢?win10的记事本已经默认支持utf-8,自动桌子也要跟上步伐啊。
说白了,unicode的作用就是可以同时支持多国语言,如果你在一个句子里面要同时显示 简体、繁体、日文、韩文,那就要用到unicode了。
如果你的程序里面只有英文字母,没有汉字,没有日文、韩文,那utf-8格式的lsp和原来的ansi格式的lsp文件编译成fas后没有任何区别。
autoCAD2021支持unicode,也会付出很高代价,以后高版本的fas将不能在低版本使用,当然老的fas在新的cad下还是正常使用的。
打开cad的安装目录,也就是acad.exe所在的位置,可以看到vl开头的文件大多同时有两个差不多的文件名,一个是传统的,一个是新增的。如vl.arx,新增加了一个vl_u.arx。 有个vl.crx, 也有vl_u.crx.
vl.arx是不支持unicode的,vl_u.arx是支持unicode的。
也就是说桌子公司弄了两套vlisp,启动acad.exe时加载哪一套,由系统变量lispsys来决定.
lispsys=1,加载unicode版的vlisp;lispsys=0,加载传统版的vlisp。这也是为什么改了系统变量lispsys,需要重启cad才能生效的原因。

评分

参与人数 5明经币 +5 收起 理由
tigcat + 1 很给力!
被承包的东子 + 1
caoyin + 1 赞一个!
masterlong + 1 照这么说,不用重启,直接加载对应arx也可.
自贡黄明儒 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2021-3-19 11:20:12 | 显示全部楼层
LISPSYS(系统变量)

控制使用 VLISP 命令启动的默认 AutoLISP 开发环境和编辑器。
  
类型:
  
  
整数
  
  
保存位置:
  
  
注册表
  
  
初始值:
  
  
0
  
  
  
  
说明
  
  
0
  
  
Visual LISP IDE (VL IDE) 被设置为默认编辑器,AutoLISP 函数不完全支持 Unicode 字符。
  
AutoLISP 源 (LSP) 文件在保存和编译时使用 ASCII (MBCS) 字符集。
  
注意:此设置导致 AutoCAD 2020 和早期版本的行为,并且仅在 Windows 上受支持。
  
  
1
  
  
Visual Studio (VS) Code 被设置为默认编辑器,AutoLISP 函数完全支持 Unicode 字符。
  
AutoLISP 源 (LSP) 文件在保存时,使用在 VS Code 中设置的编码,在编译时,它们使用 Unicode 字符集。
  
  
2
  
  
Visual Studio (VS) Code 被设置为默认编辑器,AutoLISP 函数完全支持 Unicode 字符。
  
AutoLISP 源 (LSP) 文件在保存时,使用在 VS Code 中设置的编码,在编译时,它们使用 ASCII (MBCS) 字符集。
  
注意:更改 LISPSYS 系统变量的当前值后,必须重新启动 AutoCAD 才能切换 AutoLISP 开发环境。

发表于 2021-3-18 09:36:02 | 显示全部楼层
baitang36 发表于 2021-3-17 17:09
确实如此,但发展趋势是用utf-8,桌子也在跟进

看不出有什么优势。
通常文档都是以一个语种为主,其它语种出现的数量很少。对于纯中文/英文文档,两种编码方式结果一样,没区别;对于中文文档中混杂的少量英文字符,节省的空间非常小;只有在英文文档中夹杂着少量中文,UTF-8才有优势。可是就实际应用而言,基本出现的是纯中文/英文/中文混英文三种方式,对于英文文档夹杂少量中文,主体文档英文就说明了读者是英文不懂中文的,这样文档中夹杂少量中文,读者看不懂啊,这种方式出现的概率应该是非常少的。
 楼主| 发表于 2021-3-17 16:26:53 | 显示全部楼层
本帖最后由 baitang36 于 2021-3-17 16:30 编辑
mikewolf2k 发表于 2021-3-17 15:52
如果你的程序里面只有英文字母,没有汉字,没有日文、韩文,那utf-8和原来的ansi没有任何区别。

这句话 ...

你说的对,ansi格式的lsp和utf-8格式的lsp文件是不同的。
我的意思是想表达这两种格式的源码中如果只有纯英文,在lispsys=1时编译后的fas没有区别。
对于0x00-0x7F之间的字符,UTF-8编码与ASCII编码完全相同。
发表于 2021-3-17 13:41:45 | 显示全部楼层
你是怎么发现这些的
发表于 2021-3-17 13:50:01 | 显示全部楼层
本帖最后由 caoliu023 于 2021-3-17 16:47 编辑

我之前看见这些文件也很疑惑,感谢楼主为我们解惑。
发表于 2021-3-17 14:17:25 来自手机 | 显示全部楼层
你很厉害,请继续挖掘,看看如何利用cad2021自带的vs stadio kaifqlisp1
 楼主| 发表于 2021-3-17 15:16:04 | 显示全部楼层
jun353835273 发表于 2021-3-17 13:41
你是怎么发现这些的

别人给我一个不能反编译的fas,顺藤摸瓜,就跟到这里来了
发表于 2021-3-17 15:46:06 | 显示全部楼层
UTF-8很麻烦,以前大量的不支持UTF-8的都可能出问题。在现在硬盘内存容量极大的情况下,UTF-8基本没好处。
发表于 2021-3-17 15:52:02 | 显示全部楼层
如果你的程序里面只有英文字母,没有汉字,没有日文、韩文,那utf-8和原来的ansi没有任何区别。

这句话不对,文件前面会个标识符表明本文件的编码格式,是UTF-8还是ANSI,后面的字符部分才一样。文件头不一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 16:33 , Processed in 0.184840 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表