You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
signal-cli link QR code renders as ?? in terminal (native binary 0.14.5) #2073
HI, thanks for the great library. Sadly in the last few releases (during ~last month) the following grefression was introduced:
On the Linux native binary (0.14.5), signal-cli link -n "Name" outputs box-drawing Unicode characters (▄▀█, U+2580/U+2584/U+2588) for the QR code, but
they render as ?? in the terminal. This makes the QR unscannable.
The URI line is output correctly and can be used as a workaround.
Environment:
signal-cli 0.14.5 (Linux native GraalVM binary)
Ubuntu 22.04
TERM=xterm-256color
stdout encoding: UTF-8
Steps to reproduce:
signal-cli link -n "Test" on Linux native binary
QR block characters render as ?? instead of ▄▀█
Terminal shows sgnl://linkdevice?... URI correctly above the broken QR
Expected: QR code renders as scannable block characters.
Actual: ?? characters instead of box-drawing blocks.
Workaround: The URI is output correctly — extract it and generate a QR elsewhere:
# Option A: suppress QR, URI only
env TERM=dumb signal-cli link -n "Name"# Option B: pipe to file, extract URI, generate PNG QR
signal-cli link -n "Name"2>&1| tee ~/signal-link.txt
grep -o 'sgnl://linkdevice[^[:space:]]*'~/signal-link.txt | qrencode -o ~/signal-link.png -s 12 -m 4
Notes:
Same behavior reported in earlier versions (known GraalVM native image stdout encoding issue with box-drawing chars U+2580–U+2588)
env _JAVA_OPTIONS="-Dfile.encoding=UTF-8" does not fix it (native binary, not JVM)
Reacted by Simo Haasanen, Philipp Dylong, ronniedude and Vladimir Rosu
@klemens-u : This seems to be a problem specific to the upstream GraalVM build; you could try to use one of the third-party binaries (which use a different toolchain) or rebuild it locally:
this bug continues and it is wider. unicode characters do not show correctly, only ascii characters show correctly. best way is to test signal-cli receive and watch unicode quotation marks, should be “something” not ?something?. of course link command is affected.
however, this affects signal native only. if you use separate java, this bug doesn't happen. if you pipe output into file, then it is proper utf-8 encoding, like signal-cli command >output.txt.
i used signal-cli-native and signal-cli 0.14.9 to test, on debian unstable (2026-10-21).
my guess is, java engine which is bundled inside signal-cli-native has something weird.
FYI: I don't see the explicit (recommended) command-line build option "-Dfile.encoding=UTF-8" for native-image in the respective build logs (e.g. this one or this one). The builds mentioned above do use it; maybe that's all what makes a difference. (EDIT1: Looks like you can't directly link to the raw logs on GitHub)
(EDIT2: Maybe lines 35ff in build.gradle.kts are somehow ignored?)
Strike that, the "-Dfile.encoding=UTF-8 -J-Dfile.encoding=UTF-8 -march=compatibility --enable-native-access=ALL-UNNAMED" options can be seen in our own logs, so these are passed to native-image and they stem from the above configuration file.
Activity
m-ueberall commentedon Jun 19, 2026
@klemens-u : This seems to be a problem specific to the upstream GraalVM build; you could try to use one of the third-party binaries (which use a different toolchain) or rebuild it locally:
brad2014 commentedon Aug 5, 2026
FWIW I reverted to this as a workaround:
zylzyz commentedon Oct 21, 2026
due to privacy, i don't post outputs.
this bug continues and it is wider. unicode characters do not show correctly, only ascii characters show correctly. best way is to test
signal-cli receiveand watch unicode quotation marks, should be “something” not ?something?. of courselinkcommand is affected.however, this affects signal native only. if you use separate java, this bug doesn't happen. if you pipe output into file, then it is proper utf-8 encoding, like
signal-cli command >output.txt.i used signal-cli-native and signal-cli 0.14.9 to test, on debian unstable (2026-10-21).
my guess is, java engine which is bundled inside signal-cli-native has something weird.
vrosu commentedon Nov 4, 2026
Same issue on 0.14.9 with the native linux build.
kikoreis commentedon Nov 6, 2026
Same on signal-cli-native package 0.14.9+morph027+2 (Ubuntu 26.04 LTS host, glibc 2.43, x86_64).
signal-cli link -n fooon a UTF-8 PTY prints the QR as '?'.LC_ALL=C.UTF-8 printf '█\n'draws a block in the same session, andlocale charmapreports UTF-8.So this looks like the native image's stdout charset, not the terminal. Ended up using qrencode as workaround.
m-ueberall commentedon Nov 6, 2026
FYI: I don't see the explicit (recommended) command-line build option "-Dfile.encoding=UTF-8" fornative-imagein the respective build logs (e.g. this one or this one). The builds mentioned above do use it; maybe that's all what makes a difference.(EDIT1: Looks like you can't directly link to the raw logs on GitHub)
(EDIT2: Maybe lines 35ff in
build.gradle.ktsare somehow ignored?)Strike that, the "
-Dfile.encoding=UTF-8 -J-Dfile.encoding=UTF-8 -march=compatibility --enable-native-access=ALL-UNNAMED" options can be seen in our own logs, so these are passed tonative-imageand they stem from the above configuration file.