lamensterms 发表于 2022-7-6 06:28:48

LISP例程文本文件b可以吗

嘿伙计们,
 
我正在为所有LISP例程创建自己的自定义头,我选择的一些字符/符号依赖于UNICODE编码。
 
我一点也不熟悉ANSI和UNICODE之间的区别,所以我想知道你们是否可以教我UNICODE是否可以用于LISP例程——如果字符实际上不是例程的一部分?
 
谢谢你的帮助。

irneb 发表于 2022-7-6 06:36:14

Unicode是一组在计算机上保存文本的方式。整个原理称为字符编码。Unicode每个字符至少使用16位。ANSI类似于旧的DOS ASCII代码,两者每个字符仅使用8位。问题是ANSI/ASCII只有大约230个可用字符-有256个可能,但有些用作控制代码。所以你会发现很多特殊的角色不可用。
 
Unicode以双字节字符开始。这被称为Unicode 16,因为它使用16位并允许65536个不同字符。你也可以得到Unicode 32,以此类推。还有两种主要变体,称为小端和大端,不同之处在于每个字符中位的方向。使用little endian(windows上的默认设置),您可以将其保存在从最大位置到最小位置的位置,即您如何写下数字(例如,您将用little endian编写的1024个数字写成124个数字,而不是用big endian编写的421个数字)。
 
不幸的是,ACad根本不读取Unicode。但是还有第二个想法叫做UTF8。这是一种可变位长度编码。前127个字符与ANSI/ASCII中的字符相同,但如果8位代码大于该值,则表示该字符有另一个8位字节。通常,这些文件至少可以加载到acad中,但对于奇怪的字符,我仍然看到它们带来了麻烦。
 
如果这些特殊字符只是在标题中,我建议保存为UTF8,并将这些字符保留在注释中。这样,acad应该能够正确加载文件而不会出现问题。

irneb 发表于 2022-7-6 06:40:32

例如,我制作了一个UTF8文件,其中只包含这一行:
然后使用Unicode和ANSI保存。
 
如果我加载ANSI,我会得到:
Unicode版本(小端和大端):
*Cancel*
bad character read (octal): 0和UTF8:
Unicode worked ℅ℓ№℗™Ω℮←↑→↓↔↕↨"Unicode worked ℅ℓ№℗™Ω℮←↑→↓↔↕↨"

lamensterms 发表于 2022-7-6 06:46:23

嗨,irneb,非常感谢您花时间回复并解释编码。
 
我将尝试使用各种UNICODE字符创建标题,并将其保存到UTF8,然后看看哪些字符可以隐藏。
 
再次感谢,我会发回我的结果。

lamensterms 发表于 2022-7-6 06:53:18

你好,irneb,
 
你的建议很有效。通过使用UTF8编码,我能够包含创建标题所需的所有UNICODE字符。
 
4
 
再次感谢你的帮助。
 
马库斯

irneb 发表于 2022-7-6 06:56:51

太棒了是的,这些边界是一个问题。它们是ANSI与旧的ASCII代码不同的地方-主要是因为使用ASCII时(即DOS天-http://www.theasciicode.com.ar/extended-ascii-code/box-drawing-character-ascii-code-194.html)他们需要这些边框,因为所有界面都是文本,而这些边框是正确布局用户界面的唯一方法。因此,他们在包含这些字符的数字127之后添加了额外字符。不幸的是,并非所有计算机都使用同一组,例如,与IBM兼容的计算机使用了一种称为代码页437的东西,其中包括这些边界字符。E、 g.一个名为Norton Commander的旧DOS应用程序:
https://upload.wikimedia.org/wikipedia/en/1/1b/Norton_Commander_5.51.png
https://en.wikipedia.org/wiki/Box-drawing_character
 
现在有些人试图用-、+和|来近似这些。如果你使用这些软件,为了让生活更轻松,请尝试使用此在线应用程序:http://www.asciiflow.com/#Draw . 使用它的好处是,它不依赖于任何特殊字符,只依赖于ASCII、ANSI、大多数其他8位代码页和UTF8常见的正常前7位ASCII中的一些字符。
 
顺便问一下,你为什么用记事本写Lisp程序?如果可能的话,我建议使用AutoCAD的内置VLIDE。或者,如果你不能(例如,在Windows上不使用AutoCAD),那么就找一个可以处理lisp的不错的代码编辑器,例如,我喜欢Notepad++,尽管有很多免费的可供选择(http://forums.augi.com/showthread.php?120750-最佳LISP编辑器)。

lamensterms 发表于 2022-7-6 07:02:37

嗨,irneb,
 
再次感谢您的帮助。
 
http://www.asciiflow.com/#Draw看起来像一个方便的工具。您是否建议我只使用ANSI编码中可用的字符(而不是我在上面选择的边界字符,即使它们目前似乎有效)?
 
哈哈,我只使用记事本,因为它是打开我编辑的第一个例程的程序。这不是出于情绪……相反,这是默认的程序,我从未想过要改变。我有时确实会使用VLIDE(主要是在调试时)……但我发现在从windows资源管理器打开文件时,记事本更容易使用。听起来我应该看看记事本++。
 
再次感谢。

irneb 发表于 2022-7-6 07:07:03

不客气!
这取决于你。如果你的代码应该被其他人使用,我肯定会考虑。虽然大多数编辑器可以处理UTF8,但问题是一些编辑器可能没有安装正确显示这些字符的字体。 
对于(任何语言的)源代码,在进行文本编码时,始终使用最小公分母是一个好主意。只是没有“是但”的场景。
 
我绝对会建议这样的事情。特别是在lisp中,有一个编辑器可以为您“计算”括号。在记事本里,这是我最大的痛苦。然后,将代码格式化为“可读”代码的困难是记事本中的一项艰巨任务,而VLIDE将其转换为一次点击操作,并且记事本++在您键入时进行格式化(或者使用其一些插件,也可以使用自动格式化程序)。

lamensterms 发表于 2022-7-6 07:11:17

太棒了,再次感谢你的帮助。
 
我当然会检查Notepad++,听起来它几乎可以消除我在VLIDE中检查代码的需要(因为我的大多数调试结果都是括号计数错误)。
 
我还认为我会听取你关于UNICODE字符的建议。。。坚持使用股票似乎可以避免未来出现一些潜在的混乱。
 
再次感谢irneb,你帮了我很大的忙。

neophoible 发表于 2022-7-6 07:15:18

是的,这可能是个好主意。我记得早在AutoLISP还很孤独的时候,我有一个编辑器,可以创建很好的阻塞标题。我上钩了。这些标题现在看起来像垃圾。我希望有像irneb这样的人来警告我。干得好irneb。
页: [1] 2
查看完整版本: LISP例程文本文件b可以吗