[Ecls-list] decoding error on fas file compiled from utf-8 files.

Pascal J. Bourguignon pjb at informatimago.com
Mon Mar 5 20:27:51 UTC 2012


Hello,

This evening I pulled from git the latest release of ecl, compiled it,
and now I'm trying to boot it, unfortunately it fails after compiling my
files (ql:quickload :com.informatimago.common-lisp.cesarum) with:

…
[package com.informatimago.common-lisp.cesarum.file]
[package com.informatimago.common-lisp.cesarum.peek-stream].
[package com.informatimago.common-lisp.cesarum.cache].
..................................................
[package com.informatimago.common-lisp.cesarum.float-binio].
An error occurred during initialization:
decoding error on stream #<sequence-input stream 000000000348b3c0> (:external-format (:utf-8 :lf)): the octet sequence (233 112 117) cannot be decoded..
[pjb at kuiper :0 lisp]$ echo $?
1

It looks like the error is produced after compiling (since quicklisp
prints the name of the last package defined).

All my files are stored in UTF-8, and none of them contain that octet
sequence (some of them contain the characters "épu" to which this octet
sequence decodes in iso-8859-1.

I tried with and without 
(setf ext:*default-external-format* '(:utf-8 :lf))
in ~/.eclrc.lisp.

I tried deleting the .fas and recompiling everything.  I always get
this error.

Since it doesn't say which file, and since it exits right away, it's
hard to find what's occuring.




However, since I find that sequence of octets in the files:

#P"/home/pjb/.cache/common-lisp/kuiper.lan.informatimago.com/ecl-12.2.1-70b3b263-linux-x64/home/pjb/quicklisp/local-projects/com/informatimago/common-lisp/cesarum/iso3166.fas" 
#P"/home/pjb/.cache/common-lisp/kuiper.lan.informatimago.com/ecl-12.2.1-70b3b263-linux-x64/home/pjb/quicklisp/local-projects/com/informatimago/common-lisp/cesarum/iso3166.o" 

I guess that what's happening is that ecl writes those files in
iso-8859-1 and later tries to read them back in utf-8.

(/home/pjb/quicklisp/local-projects/com/informatimago/common-lisp/cesarum/iso3166.lisp
is a file encoded in utf-8 that contains the characters "épu" (in strings)).




-- 
__Pascal Bourguignon__                     http://www.informatimago.com/
A bad day in () is better than a good day in {}.




More information about the ecl-devel mailing list