尘缘一生 发表于 2022-12-5 19:10:14

代码多用版本的烦恼(为什么)?

本帖最后由 尘缘一生 于 2022-12-5 19:13 编辑

一段代码,判定不同CAD版本,从而支持,为什么这么处理,繁体CAD,还是乱码?

难道整篇幅 lisp 需要编码系统?,还有 utf-8啥的什么道理?





自贡黄明儒 发表于 2022-12-6 08:22:22

以前用05英文版,发现有些变量设置与中文版不同,否则运行出错。

繁体版没用过,未知。

菜卷鱼 发表于 2022-12-6 08:48:15

除了简体中文之外,只用过08英文版的
假如是CAD语言版本不同,应该是要从LISP的编码格式出发吧?
ANSI通用性大一点

mikewolf2k 发表于 2022-12-6 15:43:36

文件全部都是01储存的,编码规则不正确的话,这些01就不能正确的识别为字符,当然基于字符的解释器也就不能获得正确的代码,也就不能运行。
UTF-8是Win7开始才流行的,老版本可能会不支持,用UNICODE相对安全些。

小菜123 发表于 2022-12-6 16:18:57

你用的这个繁体不对,正宗的繁体,在简体系统里看起来是乱码:D-

尘缘一生 发表于 2022-12-6 17:02:26

小菜123 发表于 2022-12-6 16:18
你用的这个繁体不对,正宗的繁体,在简体系统里看起来是乱码

大师,这很可能,我就是在百度,简转繁体处理了下。

你有种再说一遍 发表于 2022-12-6 18:23:10

本帖最后由 你有种再说一遍 于 2022-12-6 18:27 编辑

低版本cad的lisp解析器已经被编译为指定编码(中文就是GBK,也就是你看到的GB18030,GB18030是GB2312的扩展),所以动态执行lisp的时候需要指定此编码.
而cad2021?支持了UTF8.
UTF8是先告诉你多长,再动态获取后面的字节,具体原理搜索一下就行,会发现他们真聪明.
回到cad,但是高低版本不一样的编码策略,就需要放弃动态执行了,不过也可以通过飞诗编辑器之类的转换再发送到cad执行.
顺带一提,如果在低版本的图纸上面写了utf8字符串,那么会出现断言失败,例如写到图层名上面,lisp每次获取图层名都会不一样,带有乱码后缀.
因此我换到c#去玩了...

vitalgg 发表于 2022-12-7 14:59:35

ANSI 并不是统一的编码格式,而是对应不同的国家或地区的语言的编码,
如简体中文的 ANSI,对应的是 cp936 gb2312字符集
繁体中文的ANSI对应的是big5 ,cp950字符集
日文的ANSI对应的是shiftjis字符集

所以你在简体中文中显示的繁体字是gb2312字符集,不是big5字符集。

为了统一编码,unicode 字符集应运而生。保存文件时 unicode 字符集一般使用 utf8 编码标准 保存。

尘缘一生 发表于 2022-12-7 20:02:14

vitalgg 发表于 2022-12-7 14:59
ANSI 并不是统一的编码格式,而是对应不同的国家或地区的语言的编码,
如简体中文的 ANSI,对应的是 cp936...

我希望贴出一段,繁体中文版的LISP源码样例出来,就一看明白。

尘缘一生 发表于 2022-12-7 20:05:24

自贡黄明儒 发表于 2022-12-6 08:22
以前用05英文版,发现有些变量设置与中文版不同,否则运行出错。

繁体版没用过,未知。

到哪里搞到一段繁体中文LISP样例代码出来?
页: [1] 2
查看完整版本: 代码多用版本的烦恼(为什么)?