Emacs içinde slime isteminden yürütüldüğünde, hata olmadan çalışan bir kod var.sbcl kodlama hatası sadece komut isteminden çalıştırıldığında mı?
* (ei:proc-file "BRAvESP000.log" "lixo")
debugger invoked on a SB-INT:STREAM-ENCODING-ERROR:
:UTF-8 stream encoding error on
#<SB-SYS:FD-STREAM for "file /Users/arademaker/work/IBM/scolapp/lixo"
{10049E8FF3}>:
the character with code 55357 cannot be encoded.
Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [OUTPUT-NOTHING ] Skip output of this character.
1: [OUTPUT-REPLACEMENT] Output replacement string.
2: [ABORT ] Exit debugger, returning to top level.
(SB-IMPL::STREAM-ENCODING-ERROR-AND-HANDLE #<SB-SYS:FD-STREAM for "file /Users/arademaker/work/IBM/scolapp/lixo" {10049E8FF3}> 55357)
0]
gizem her iki durumda da aynı SBCL 1.1.8 ve aynı makineyi, Mac OS 10.8.4 kullanıyorum düşünüyoruz: istemi dan SBCL başladı, ben hata var. Herhangi bir fikir?
kodu:
(defun proc-file (filein fileout &key (fn-convert #'identity))
(with-open-file (fout fileout
:direction :output
:if-exists :supersede
:external-format :utf8)
(with-open-file (fin filein :external-format :utf8)
(loop for line = (read-line fin nil)
while line
do
(handler-case
(let* ((line (ppcre:regex-replace "^.*{jsonTweet=" line "{\"jsonTweet\":"))
(data (gethash "jsonTweet" (yason:parse line))))
(yason:encode (funcall fn-convert (yason:parse data)) fout)
(format fout "~%"))
(end-of-file()
(format *standard-output* "Error[~a]: ~a~%" filein line)))))))
Bunu varsayarak başlamanızı öneririz yason sorun değildir:
ben Yason'daki bu düzeltmek için kabul edilmiş bir yama gönderilen hızlı ise - ve kodunuza aşağıdakileri ekleyin: '(format * standart-çıktı *" ~ & ~ {~ x ~^~} "('liste' kod satırı satırı)). Başarısız durumdaki son satır, SLIME ortamındaki karşılık gelen çizgi ile aynı mı? –
Belki birden fazla dizinde BRAvESP000.log adlı dosyalar var ve SLIME içindeysanız veya SBCL'yi manuel olarak başlatıyorsanız geçerli dizin farklıdır. Mutlak yolları dene. – acelent
Karakter kodu bir hata değilse, bu, Unicode aralıklı vekil çiftleri grubuna aittir. Bunlar UTF-8 kodlaması karakterleri değildir, UTF-16 ile kullanım için ayrılmıştır. İşte benim tahminim: web tasarımında özel düzlem karakterlerini özel bir yazı tipiyle birlikte kullanmak üzere (çeşitli oklar, mermiler vb.) Ikon olarak kullanılmak üzere modern bir gelenek var. Twitter özellikle bunu yapıyor (örneğin Github da öyle). Bu, bir HTML sayfasının görüntüleri yüklemekten tasarruf etmesinin bir yoludur (bunlar, özel bir yazı tipinden vektör anahatlarıdır). Emacs'in göndermeden önce onlarla ilgileneceğini hayal ediyorum. –