总共有两个源文件:
1. cl-bitbar.ros。是用ros init来直接生成的,然后稍加修改;
2. cl-bitbar.lisp。负责调用 format 来输出内容。
cl-bitbar.ros 的内容如下
#!/bin/sh
#|-*- mode:lisp -*-|#
#|
exec /usr/local/bin/ros -Q -- $0 "$@"
|#
(progn ;;init forms
(ros:ensure-asdf)
;;#+quicklisp(ql:quickload '() :silent t)
(let ((sb-impl::*default-external-format* :UTF-8))
(load "/Users/liutos/SourceCode/cl/cl-bitbar/cl-bitbar.lisp")))
(defpackage :ros.script.cl-bitbar.3787106705
(:use :cl))
(in-package :ros.script.cl-bitbar.3787106705)
(defun main (&rest argv)
(declare (ignorable argv))
(let ((sb-impl::*default-external-format* :UTF-8))
(com.liutos.cl-bitbar::main)))
;;; vim: set ft=lisp lisp:
cl-bitbar.lisp 的内容如下
(in-package #:cl-user)
(defpackage #:com.liutos.cl-bitbar
(:use #:cl))
(in-package #:com.liutos.cl-bitbar)
(defun main ()
(format t "生"))
这个.ros文件在命令行直接调用是没有问题的,截图如下
想请教各位一些问题:
1. 有人试过用CL写BitBar插件并遇到上述问题的吗?如果有并且解决了的话,恳求传授经验😂;
2. 或者有人对出现这类乱码问题有什么心得的吗?希望不吝赐教
我有试过在命令行重定向 cl-bitbar.ros 脚本的输出,确认了这个“生”字在输出的时候是 UTF-8 编码的,理应不会是展示为问号。我也试过修改 com.liutos.cl-bitbar::main,让它把“生”字写入到文件中,用 hexdump 查看的结果与重定向一致。
难道是在输出到标准输出的时候,编码就会被改了吗?🤔
--