diff --git a/src/PVE/CLIFormatter.pm b/src/PVE/CLIFormatter.pm index d93bed6..758809e 100644 --- a/src/PVE/CLIFormatter.pm +++ b/src/PVE/CLIFormatter.pm @@ -27,7 +27,8 @@ PVE::JSONSchema::register_renderer('bytes', \&PVE::Format::render_bytes); sub render_yaml { my ($value) = @_; - my $data = YAML::XS::Dump($value); + # YAML::XS returns UTF-8 encoded output, but renderers need to return text + my $data = decode('UTF-8', YAML::XS::Dump($value)); $data =~ s/^---[\n\s]//; # remove yaml marker return $data; diff --git a/test/format_test.pl b/test/format_test.pl index 8ccfd5a..2b9460d 100644 --- a/test/format_test.pl +++ b/test/format_test.pl @@ -45,6 +45,7 @@ my $render_data = [ ["bytes", 1024, undef, "1.00 KiB"], ["bytes", 1024 * 1024 * 123 + 1024 * 300, 1, "123.3 MiB"], ["bytes", 1024 * 1024 * 1024 * 1024 * 4 + 1024 * 1024 * 2048 * 8, undef, "4.02 TiB"], + ["yaml", { description => "Erkl\x{e4}rung" }, undef, "description: Erkl\x{e4}rung\n"], ]; foreach my $data (@$render_data) {