encoding-aware string redux added by klovett on Tue Oct 6 20:54:27 2026
#59 $ cat ~/tmp/encoding.scm (import (except (scheme base) read-bytevector) (only (scheme process-context) command-line) (chicken base) (only (chicken io) read-bytevector) (only (chicken bytevector) utf8->string latin1->string)) (define encoder-name (string-append (cadr (command-line)) "->string")) (define encoder (eval (string->symbol encoder-name))) (print (string-length (encoder (read-bytevector)))) #60 $ printf "\xe2\x82\xa1" | use_chicken 6 csi -nq -s ~/tmp/encoding.scm latin1 3 #60 $ printf "\xe2\x82\xa1" | use_chicken 6 csi -nq -s ~/tmp/encoding.scm utf8 1 #60 $ printf "\xe2\x28\xa1" | use_chicken 6 csi -nq -s ~/tmp/encoding.scm latin1 3 #60 $ printf "\xe2\x28\xa1" | use_chicken 6 csi -nq -s ~/tmp/encoding.scm utf8 Error: (utf8->string) string contains invalid UTF-8 sequence: #u8(226 40 161) Call history: /Users/klovett/tmp/encoding.scm:9 (##core#begin (##core#ensure-toplevel-definition encoder) (##core#set! encoder (eval (string->symbol ... /Users/klovett/tmp/encoding.scm:9 (##core#ensure-toplevel-definition encoder) <syntax> (##core#undefined) /Users/klovett/tmp/encoding.scm:9 (##core#set! encoder (eval (string->symbol encoder-name))) /Users/klovett/tmp/encoding.scm:9 (eval (string->symbol encoder-name)) /Users/klovett/tmp/encoding.scm:9 (string->symbol encoder-name) /Users/klovett/tmp/encoding.scm:9 (eval (string->symbol encoder-name)) /Users/klovett/tmp/encoding.scm:9 (string->symbol encoder-name) /Users/klovett/tmp/encoding.scm:11 (print (string-length (encoder (read-bytevector)))) /Users/klovett/tmp/encoding.scm:11 (string-length (encoder (read-bytevector))) /Users/klovett/tmp/encoding.scm:11 (encoder (read-bytevector)) /Users/klovett/tmp/encoding.scm:11 (read-bytevector) /Users/klovett/tmp/encoding.scm:11 (print (string-length (encoder (read-bytevector)))) /Users/klovett/tmp/encoding.scm:11 (string-length (encoder (read-bytevector))) /Users/klovett/tmp/encoding.scm:11 (encoder (read-bytevector)) /Users/klovett/tmp/encoding.scm:11 (read-bytevector) <--