代码多用版本的烦恼(为什么)?
本帖最后由 尘缘一生 于 2022-12-5 19:13 编辑一段代码,判定不同CAD版本,从而支持,为什么这么处理,繁体CAD,还是乱码?
难道整篇幅 lisp 需要编码系统?,还有 utf-8啥的什么道理?
以前用05英文版,发现有些变量设置与中文版不同,否则运行出错。
繁体版没用过,未知。 除了简体中文之外,只用过08英文版的
假如是CAD语言版本不同,应该是要从LISP的编码格式出发吧?
ANSI通用性大一点 文件全部都是01储存的,编码规则不正确的话,这些01就不能正确的识别为字符,当然基于字符的解释器也就不能获得正确的代码,也就不能运行。
UTF-8是Win7开始才流行的,老版本可能会不支持,用UNICODE相对安全些。 你用的这个繁体不对,正宗的繁体,在简体系统里看起来是乱码:D- 小菜123 发表于 2022-12-6 16:18
你用的这个繁体不对,正宗的繁体,在简体系统里看起来是乱码
大师,这很可能,我就是在百度,简转繁体处理了下。 本帖最后由 你有种再说一遍 于 2022-12-6 18:27 编辑
低版本cad的lisp解析器已经被编译为指定编码(中文就是GBK,也就是你看到的GB18030,GB18030是GB2312的扩展),所以动态执行lisp的时候需要指定此编码.
而cad2021?支持了UTF8.
UTF8是先告诉你多长,再动态获取后面的字节,具体原理搜索一下就行,会发现他们真聪明.
回到cad,但是高低版本不一样的编码策略,就需要放弃动态执行了,不过也可以通过飞诗编辑器之类的转换再发送到cad执行.
顺带一提,如果在低版本的图纸上面写了utf8字符串,那么会出现断言失败,例如写到图层名上面,lisp每次获取图层名都会不一样,带有乱码后缀.
因此我换到c#去玩了... ANSI 并不是统一的编码格式,而是对应不同的国家或地区的语言的编码,
如简体中文的 ANSI,对应的是 cp936 gb2312字符集
繁体中文的ANSI对应的是big5 ,cp950字符集
日文的ANSI对应的是shiftjis字符集
所以你在简体中文中显示的繁体字是gb2312字符集,不是big5字符集。
为了统一编码,unicode 字符集应运而生。保存文件时 unicode 字符集一般使用 utf8 编码标准 保存。 vitalgg 发表于 2022-12-7 14:59
ANSI 并不是统一的编码格式,而是对应不同的国家或地区的语言的编码,
如简体中文的 ANSI,对应的是 cp936...
我希望贴出一段,繁体中文版的LISP源码样例出来,就一看明白。
自贡黄明儒 发表于 2022-12-6 08:22
以前用05英文版,发现有些变量设置与中文版不同,否则运行出错。
繁体版没用过,未知。
到哪里搞到一段繁体中文LISP样例代码出来?
页:
[1]
2