BUG #19539: psql 17.6 on Windows 11 prints random garbage characters in Russian localized output of \d

Started by PG Bug reporting form3 months ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 19539
Logged by: Maria Adyakova
Email address: adyakovam@gmail.com
PostgreSQL version: 17.6
Operating system: Windows 11
Description:

Environment

PostgreSQL: 17.6
psql: 17.6
Windows 11
Official EnterpriseDB installer
UTF-8 console (code page 65001)
server_encoding = UTF8
client_encoding = UTF8

Description

When running \d <table> in Russian localization, the output sometimes
contains random garbage Unicode characters immediately after the localized
header "По умолчанию".

Example:

Таблица "public.articles"
Столбец | Тип | Правило сортировки | Допустимость NULL | По умолчанию
⫐鄢ʧ

The garbage characters change every execution.

Switching the locale to English:
set LANG=C

completely eliminates the problem.

The issue reproduces even when starting psql with:
psql -X
so it does not appear to be related to user configuration.

Expected behavior:
No extra characters after the localized header.

Actual behavior:
Random Unicode garbage appears after "По умолчанию" on every invocation.

#2Thomas Munro
thomas.munro@gmail.com
In reply to: PG Bug reporting form (#1)
Re: BUG #19539: psql 17.6 on Windows 11 prints random garbage characters in Russian localized output of \d

On Tue, Jun 30, 2026 at 3:12 AM PG Bug reporting form
<noreply@postgresql.org> wrote:

When running \d <table> in Russian localization, the output sometimes
contains random garbage Unicode characters immediately after the localized
header "По умолчанию".

Example:

Таблица "public.articles"
Столбец | Тип | Правило сортировки | Допустимость NULL | По умолчанию
⫐鄢ʧ

The garbage characters change every execution.

Do any other languages show clues? Could you please try Ukrainian,
Greek, Japanese?

#: describe.c:2070 describe.c:4572
msgid "Default"
msgstr "По умолчанию"

headers[cols++] = gettext_noop("Default");

That is then fed through pg_wcsformat(). I wonder if that could be
confused about encodings and NUL terminators or something, but I don't
have a specific theory. Could you please locate the relevant psql.mo
file and share it, so we can check it contains the expected byte
sequence?