tl;dr if you have an encoding problem while running guile on emacs for android with termux, make sure the LANG env var on emacs matches the value of termux:

;; ~/.emacs.d/early-init.el
(setenv "LANG" "en_US.UTF-8")

don’t where else to post this, so i’m posting it here so it doesn’t gets lost

emacs >=30 comes with android support. i’ve been using it for a while now, but it’s really only useful if you can install applications to use it with. that’s why the project offers an emacs package and a termux package with the same signature so you can share the termux binaries with the emacs runtime. packages and instructions here: https://sourceforge.net/projects/android-ports-for-gnu-emacs/files/termux/

i tried running guile on emacs with geiser a few days ago but it failed to run due to some encoding issues. it ran fine on termux

after a little googling, i compared the values of the LANG variable in both termux and emacs:

  • termux: LANG=en_US.UTF-8
  • emacs: LANG=en_US.utf8

then i just changed ˋLANGˋ on emacs to match the termux value and that solved the problem! to keep it working, i added the change to ˋ~/.emacs.d/early-init.elˋ:

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