明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5351|回复: 25

[提问] 菜鸟求问这乱码是怎么一回事?

[复制链接]
发表于 2018-10-15 21:38:18 | 显示全部楼层 |阅读模式
本帖最后由 iaso2h 于 2018-10-15 21:39 编辑

我的所有.lsp里面包含有中文的代码怎么在cad里面使用的时候会有乱码呢?无法理解(눈‸눈)郁闷死了都……


(defun C:ask ()
  (princ "测试"))










(defun change ()
  (command "._tseoutline" SS1)
  (while (= 1 (getvar "cmdactive"))
   (command pause))
  (command "._pedit" "l" "" "w" "50" ""))

(defun C:SS (/ ss1)
  (cond
    (eq (getvar "clayer") "A-E-轮廓")
    (progn
      (setq ss1 (ssget))
      (change))
    (not (eq (getvar "clayer") "A-E-轮廓"))
    (command "._tseoutline" SS1)))



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2020-6-16 10:37:28 | 显示全部楼层
因为你的编辑器默认使用了 utf-8 编码,而 AutoCAD 2021以前的版本中 ,vlide 不支持 utf-8编码,所以才乱码。

AutoCAD 2021 开始,AutoLISP(函数)开始支持 unicode,相应的 AutoLISP 源码文件也默认使用 utf-8 编码(旧的也能用啊),而且调试需要使用 VS Code(这个能支持lisp文件使用 utf-8或者其他编码)。

建议所有AutoLISP 程序员核查代码,以支持unicode的 AutoLISP(主要是字符串处理函数需要修改,还要判断AutoCAD版本与 LISPSYS系统变量的当前值等)。

点评

谢谢!  发表于 2020-6-16 13:52
发表于 2024-4-17 13:48:34 | 显示全部楼层
e2002 发表于 2020-6-16 10:37
因为你的编辑器默认使用了 utf-8 编码,而 AutoCAD 2021以前的版本中 ,vlide 不支持 utf-8编码,所以才乱 ...

编译好的vlx文件受影响吗?比如,我是在CAD2021版上用VS Code采用的UTF-8格式编辑调试,没有问题,然后生成的编译文件vlx,在CAD2021用没有问题,但是在CAD2010加载这个vlx后,提示命令未知命令
发表于 2020-6-22 11:57:04 | 显示全部楼层
windows 10的 记事本是支持 utf-8 保存与打开的。

但 AutoCAD 2020 (不管是什么语言)中的 vlide 是不支持 utf-8的,所以用它打开utf-8的文档,铁定出线中文乱码。

你要么用编辑器打开utf-8文档后改用gb18030编码保存,然后再用AutoCAD 2020或之前的vlide打开;要么换用 AutoCAD 2021 ,并使用 vscode 作为编辑调试LISP的环境。
发表于 2018-10-15 22:31:03 | 显示全部楼层
由于我是用英文版,所以也无法VLIDE直接正常读写中文
唯有应用(unicode)统一码替代。

(defun C:ask ()
  (princ "\U+6D4B\U+8BD5"))

"A-E-\U+8F6E\U+5ED3" = "A-E-轮廓"


也希望有大师指点
发表于 2018-10-16 00:34:38 | 显示全部楼层
期待大师的解答。。。。。。
发表于 2018-10-16 07:55:57 | 显示全部楼层
通常(princ "\n kkk"),\n后面加一空格,就可以消除一些乱码。
 楼主| 发表于 2018-10-16 10:28:59 | 显示全部楼层
自贡黄明儒 发表于 2018-10-16 07:55
通常(princ "\n kkk"),\n后面加一空格,就可以消除一些乱码。

还是不行呢,把(princ "\n 测试中文")              保存成.lsp文件,加载了还是乱码呢

点评

这种中文在CAD自带的lisp编辑器里敲的就不会出现这个问题  发表于 2018-10-17 08:39
发表于 2018-10-17 12:45:14 | 显示全部楼层
将 "A-E-轮廓"改为 "A-E- 轮廓"或者 " A-E-轮廓"即可消除。
发表于 2018-10-17 16:32:56 | 显示全部楼层
你的是64位系统吗?我的32位复制过来有乱码.
发表于 2020-5-28 17:43:06 | 显示全部楼层
1.在VLSIP编辑器里新建一个文档任意输入几个中文字
2.保存文件为.lsp格式(注:此文件的编码为CP936)
3.把自己的源码复制到这个文件里保存一下就可以完成转码
END……

用VLISP在读取就能正常显示中字了
发表于 2020-5-29 10:41:58 | 显示全部楼层
我也一直被这个问题困扰,但把单独的插件集合到一一起时就不出现乱码了,以前的XP系统没有遇到过。郁闷。
发表于 2020-5-29 11:01:46 | 显示全部楼层
刚试过了,8#楼的方法可以解决楼主的问题,也解决了我很长时间的困扰。在CAD的VLISP编辑器里编辑的就可以。因此先建个文件保存,随便敲击几个字符,保存后再打开,删除随便敲的那些字符,再把你要使用的插件源码复制进去,保存,问题解决。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 19:16 , Processed in 0.212589 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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