[Openmcl-devel] utf-8 output in a terminal
R. Matthew Emerson
rme at clozure.com
Sat Jul 27 22:31:45 PDT 2024
> On Jul 27, 2024, at 8:23 PM, Grégory Vanuxem <g.vanuxem at gmail.com> wrote:
>
> In FriCAS built on top of Clozure CL I obtain this output in a terminal (WSL2)
>
> (gamma(x) âÃÂàreals && Re(x) > 0) || (x âÃÂàintegers &&
> gamma(x) âÃÂàreals)
>
> instead of (SBCL)
>
> (gamma(x) ∈ reals && Re(x) > 0) || (x ∉ integers && gamma(x) ∈ reals)
>
> if I (print ...) a string with, for example, ∈, in a pure Clozure CL
> (recently git cloned) this is correctly printed, no problem.
>
> So I wonder if I have to modify the output stream character encoding
> or the output routine.
Check that the external format of the FriCAS output stream is what you expect. In other words, if you pass an explicit :external-format argument to cl:open, make sure it matches what your terminal requires.
Doing (describe *terminal-io*) might show something interesting. Here’s what it shows for me:
? (describe *terminal-io*)
#<ECHOING-TWO-WAY-STREAM input #<BASIC-CHARACTER-INPUT-STREAM UTF-8 (TTY/0) #x1824C7D6>, output #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (TTY/1) #x1824C2A6> #x1825FBE6>
Class: #<STANDARD-CLASS ECHOING-TWO-WAY-STREAM>
Wrapper: #<CLASS-WRAPPER ECHOING-TWO-WAY-STREAM #x18039A16>
Instance slots
SHARED-RESOURCE: NIL
OPEN-P: T
INPUT-STREAM: #<BASIC-CHARACTER-INPUT-STREAM UTF-8 (TTY/0) #x1824C7D6>
OUTPUT-STREAM: #<BASIC-CHARACTER-OUTPUT-STREAM UTF-8 (TTY/1) #x1824C2A6>
The default external format has been #<EXTERNAL-FORMAT :UTF-8/:UNIX #x18249C6E> for quite a long time now.
https://ccl.clozure.com/docs/ccl.html#characters-and-external-formats
>
> And more importantly, how can I achieve that?
>
> - Greg
>
> PS:
> (1) -> )lisp CCL:*DEFAULT-EXTERNAL-FORMAT*
> Value = :UNIX
More information about the Openmcl-devel
mailing list