The recent unicode changes has broken umlauts with PowerShell Core and the new Windows Terminal app at least. For example, Jäätelö comes through as J├ñ├ñtel├╢ when it is passed through the PowerShell pipeline.
Here's a short repro:
- Initialize:
gnupgtest> $env:GNUPGHOME=$pwd gnupgtest> gpg --list-keys gpg: keybox 'C:\\devel\\gnupgtest\\pubring.kbx' created gpg: C:\\devel\\gnupgtest\\trustdb.gpg: trustdb created
- Generate a key:
gnupgtest> gpg --generate-key
gpg (GnuPG) 2.3.4; Copyright (C) 2021 g10 Code GmbH
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Note: Use "gpg --full-generate-key" for a full featured key generation dialog.
GnuPG needs to construct a user ID to identify your key.
Real name: Jäätelö
Email address: jäätelö@example.com
You are using the 'CP437' character set.
You selected this USER-ID:
"Jäätelö <jäätelö@example.com>"
Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: AllowSetForegroundWindow(10208) failed: Access is denied.
gpg: AllowSetForegroundWindow(11560) failed: Access is denied.
gpg: AllowSetForegroundWindow(8160) failed: Access is denied.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: directory 'C:\\devel\\gnupgtest\\openpgp-revocs.d' created
gpg: revocation certificate stored as 'C:\\devel\\gnupgtest\\openpgp-revocs.d\\C64EF3CDED8BBFB01ADC6856F0183F7C64A93C5B.rev'
public and secret key created and signed.
pub ed25519 2022-01-07 [SC] [expires: 2024-01-07]
C64EF3CDED8BBFB01ADC6856F0183F7C64A93C5B
uid Jäätelö <jäätelö@example.com>
sub cv25519 2022-01-07 [E] [expires: 2024-01-07]- Check the key (all good so far?):
gnupgtest> gpg --list-keys
gpg: checking the trustdb
gpg: marginals needed: 3 completes needed: 1 trust model: pgp
gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2024-01-07
C:\devel\gnupgtest\pubring.kbx
------------------------------
pub ed25519 2022-01-07 [SC] [expires: 2024-01-07]
C64EF3CDED8BBFB01ADC6856F0183F7C64A93C5B
uid [ultimate] Jäätelö <jäätelö@example.com>
sub cv25519 2022-01-07 [E] [expires: 2024-01-07]- Try passing some output through the PowerShell pipeline (notice the umlauts):
gnupgtest> gpg --list-keys | select-string uid uid [ultimate] Jäätelö <jäätelö@example.com>
- Versions, codepages, etc:
gnupgtest> chcp
Active code page: 65001
gnupgtest> [System.Text.Encoding]::Default.EncodingName
Unicode (UTF-8)
gnupgtest> gpgconf --show-versions
* GnuPG 2.3.4 (f74c65fd9)
MingW32
Windows 10.0 build 22000
* Libgcrypt 1.9.4 (05422ca2)
version:1.9.4:10904:1.43:12b00:
cc:80300:gcc:8.3-win32 20190406:
ciphers:arcfour:blowfish:cast5:des:aes:twofish:serpent:rfc2268:seed:camellia:idea:salsa20:gost28147:chacha20:sm4:
pubkeys:dsa:elgamal:rsa:ecc:
digests:crc:gostr3411-94::md4:md5:rmd160:sha1:sha256:sha512:sha3:tiger:whirlpool:stribog:blake2:sm3:
rnd-mod:w32:
cpu-arch:x86:
mpi-asm:i386/mpih-add1.S:i386/mpih-sub1.S:i386/mpih-mul1.S:i386/mpih-mul2.S:i386/mpih-mul3.S:i386/mpih-lshift.S:i386/mpih-rshift.S:
hwflist:intel-cpu:intel-fast-shld:intel-bmi2:intel-ssse3:intel-sse4.1:intel-pclmul:intel-aesni:intel-rdrand:intel-avx:intel-avx2:intel-fast-vpgather:intel-rdtsc:
fips-mode:n:n:
rng-type:standard:1:2010000:1:
compliance:::
* GpgRT 1.43 (d7fb048)
* Libassuan 2.5.5 (f8cfb56)
* KSBA 1.6.0 (6b3573a)
* NTBTLS 0.2.0 (6a4ffcc)
gnupgtest> $PSVersionTable
Name Value
---- -----
PSVersion 7.2.1
PSEdition Core
GitCommitId 7.2.1
OS Microsoft Windows 10.0.22000
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0It's surprisingly hard to print Windows 11 version from command line, but I'm on Windows 11 Enterprise 21H2 22000.376 with Windows Terminal 1.11.3471.0. I installed gpg from the Simple installer for the current GnuPG link, not sure if it counts as gpg4win.
I've also set the Windows Terminal app as the default terminal application for Windows.
There's one interesting line in the key generation phase:
You are using the 'CP437' character set.
I thought I was using utf-8?