LispWorks 加载带有中文字符的 lisp 源文件出错的处理办法
LispWorks版本为:LispWorks Personal Edition 6.1.1(Intel) Mac
在执行这条命令时出错,(load "/Users/admin/myprog.lisp" :external-format :utf-8)
出错信息如下:
CL-USER 1 > (load "/Users/admin/myprog.lisp" :external-format :utf-8); Loading text file /Users/admin/myprog.lisp; Loading text file /Users/admin/cnlisp.lispError: #\变 is not of type BASE-CHAR. 1 (continue) Try loading /Users/admin/myprog.lisp again. 2 Give up loading /Users/admin/myprog.lisp. 3 Try loading another file instead of /Users/admin/myprog.lisp. 4 (abort) Return to level 0. 5 Return to top loop level 0.Type :b for backtrace or :c
错误原因是该源文件的注释语句使用了中文,试着把 LispWorks 的设置菜单的文件编解码全部设为 utf-8 ,在这个界面设置,设置如下所示:
不幸的是仍然不起作用,搜到这个帖子提到类似问题 (http://permalink.gmane.org/gmane.lisp.lispworks.general/3306 ),回复没有给出明确答案,不过建议去看它提供文档的若干章节,顺着链接在这里(http://www.lispworks.com/documentation/lw44/LWUG/html/lwuser-288.htm#pgfId-889999)看到有这样的一条命令:
(set-default-character-element-type 'simple-char)
试着执行一遍,再次加载,一切OK,显示如下:
CL-USER 2 : 1 > (set-default-character-element-type 'simple-char)SIMPLE-CHARCL-USER 3 : 1 > (load "/Users/admin/myprog.lisp" :external-format :utf-8); Loading text file /Users/admin/myprog.lisp; Loading text file /Users/admin/cnlisp.lisp#P"/Users/admin/myprog.lisp"CL-USER 4 : 1 >
虽然可以正确加载了,但是目前还是无法正确显示中文,继续尝试解决办法...
====查了半天,得到的消息不太乐观,据说是 Lispworks 在 mac 上使用等宽字体,没有对应的中文,所以没办法正确显示中文,还不是特别理解,为何我的 ccl 和 sbcl 通过 emacs 在 mac 上可以正常显示中文呢?难道说是因为它使用的是非等宽字体?