Как открыть файл, имя которого содержит код Unicode в Lisp (sbcl + slime)? - PullRequest
4 голосов
/ 10 марта 2020
(with-open-file (s "~/例子.txt"
                 :external-format :utf-8)
  (print s))

результат:

NIL c-string encoding error:
  the character with code 20363 cannot be encoded.
  [Condition of type SB-INT:C-STRING-ENCODING-ERROR]

Пример:

в Aquamacs 3.5 с новейшей слизью & sbcl2.0.2: in Aquamacs3.5 with slime & sbcl

sbcl в iterm2 может это сделать:

in iterm2

Сам Aquamacs может также открывать и записывать имя файла, содержащее utf-8.

Я попытался добавить

(setq slime-net-coding-system 'utf-8-unix)
(set-language-environment "UTF-8")

в мой файл конфигурации aquamacs, но это не работает. Пожалуйста, помогите!

Обновление: Я наконец нашел причину. Когда в Iterm2, команда

locale

дает такой вывод: enter image description here

В то время как в Aquamacs открываются из пользовательского интерфейса, в eshell это дает:

Result from eshell

После того, как я добавил:

(setenv "LANG" "en_US.UTF-8")

в мой конфиг Aquamacs, он работает! Спасибо всем, кто ответит на мой вопрос! Ниже приведены ссылки, которые мне помогают.

Какой именно вопрос

Решение вопроса

Как установить локаль для Emacs, открытой из UI

1 Ответ

0 голосов
/ 13 марта 2020

Добавьте что-то вроде:

(setenv "LANG" "en_US.UTF-8")

в вашу конфигурацию emacs. Объясните выше.

...