Quantcast
Channel: Active questions tagged utf-8 - Stack Overflow
Viewing all articles
Browse latest Browse all 1053

Why does File::Slurp get UTF8 characters wrong when I use open ':std', ':encoding(UTF-8)';?

$
0
0

I have a Perl 5.30.0 program on Ubuntu where the combination of File::Slurp and open ':std', ':encoding(UTF-8)' results in UTF8 not getting read correctly:

use strict;use warnings;use open ':std', ':encoding(UTF-8)';use File::Slurp;my $text = File::Slurp::slurp('input.txt');print "$text\n";

with "input.txt" being an UTF8 encoded text file with this content (no BOM):

ö

When I run this, the ö gets displayed as ö. Only when I remove the use open... line, it works as expected and the ö is printed as an ö.

When I manually read the file like below, everything works as expected and I do get the ö:

$text = '';open my $F, '<', "input.txt" or die "Cannot open file: $!";while (<$F>) {    $text .= $_;}close $F;print "$text\n";

Why is that and what is the best way to go here? Is the open pragma outdated or am I missing something else?


Viewing all articles
Browse latest Browse all 1053

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>