fix #6305: cli formatter: avoid encoding YAML output twice

YAML::XS::Dump already returns UTF-8 encoded octets, but its output
still got encoded once more. This is a leftover from when the YAML
output was generated by CPAN::Meta::YAML, which returns a character
string.

As a result, all non-ASCII characters got mangled with the 'yaml'
output format, for example a cluster description with a German umlaut
when running:

  pvesh get /cluster/options --output-format yaml

Print the output of YAML::XS::Dump as is, like it is already done for
the 'json' output format, and add a test for the encoding of both.

Fixes: 99d0252 ("properly encode YAML via YAML::XS")
Signed-off-by: Michal Fox <me@dualfroz.com>
This commit is contained in:
dualfroz committed 2026-10-02 16:05:27 +02:00
1 parent 92e0c082df
commit 2ad66a1cb4
2 files changed
+17 -1

No files matched your search

+2 -1
View File
@@ -380,7 +380,8 @@ sub print_api_result {
}
if ($format eq 'yaml') {
print encode('UTF-8', YAML::XS::Dump($data));
# Note: YAML::XS already returns UTF-8 encoded output
print YAML::XS::Dump($data);
} elsif ($format eq 'json') {
# Note: we always use utf8 encoding for json format
print to_json($data, { utf8 => 1, allow_nonref => 1, canonical => 1 }) . "\n";