@@ -, +, @@ the utf8 encoding --- C4/TTParser.pm | 3 ++- misc/translator/xgettext.pl | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) --- a/C4/TTParser.pm +++ a/C4/TTParser.pm @@ -64,7 +64,8 @@ sub build_tokens{ # $self->handler(default => "default", "self, line, text, is_cdata"); # anything else $self->marked_sections(1); #treat anything inside CDATA tags as text, should really make it a C4::TmplTokenType::CDATA $self->unbroken_text(1); #make contiguous whitespace into a single token (can span multiple lines) - $self->parse_file($filename); + open(my $fh, "<:encoding(utf8)", $filename) || die "Cannot open $filename ($!)"; + $self->parse_file($fh); return $self; } --- a/misc/translator/xgettext.pl +++ a/misc/translator/xgettext.pl @@ -255,7 +255,7 @@ EOF ############################################################################### sub convert_translation_file { - open(my $INPUT, '<', $convert_from) || die "$convert_from: $!\n"; + open(my $INPUT, '<:encoding(utf-8)', $convert_from) || die "$convert_from: $!\n"; VerboseWarnings::set_input_file_name $convert_from; while (<$INPUT>) { chomp; @@ -367,7 +367,7 @@ usage_error('You cannot specify both --convert-from and --files-from') if (defined $output && $output ne '-') { print STDERR "$0: Opening output file \"$output\"\n" if $verbose_p; - open($OUTPUT, '>:encoding(utf-8)', $output) || die "$output: $!\n"; + open($OUTPUT, '>:encoding(utf-8)', $output) || die "$output: $!\n"; } else { print STDERR "$0: Outputting to STDOUT...\n" if $verbose_p; open($OUTPUT, ">&STDOUT"); @@ -375,7 +375,7 @@ if (defined $output && $output ne '-') { if (defined $files_from) { print STDERR "$0: Opening input file list \"$files_from\"\n" if $verbose_p; - open(my $INPUT, '<', $files_from) || die "$files_from: $!\n"; + open(my $INPUT, '<:encoding(utf-8)', $files_from) || die "$files_from: $!\n"; while (<$INPUT>) { chomp; my $input = /^\//? $_: "$directory/$_"; --