Hello, I have the following example code:
----------------------------------------------------- use strict; use utf8; use Encode; use FileHandle; binmode STDOUT, ":utf8"; my $html = ''; #-- open filehandle to write into the $html variable as utf8 open(my $fh, '>:encoding(UTF-8)', \$html); my $orig_stdout = select( $fh ); print "Ümläut Test ßaß; 使用下列语言\n"; select( $orig_stdout ); $fh->close(); #You need to activate this line to make utf8 output correct #Encode::_utf8_on($html); print $html; ----------------------------------------------------- This prints out the utf8 characters corrupted. You have to flag the Variable after writing into it with Encode::_utf8_on() as utf8 to make it work correctly. (So activate the commented line.) Using this _utf8_on() usually means that I am doing something wrong. Is there a better way to achieve the correct behaviour? Btw. there was a change in the behaviour between perl v5.14.2 and v5.20.2: In older perl versions you could do a my $html = ''; Encode::_utf8_on($html); before opening the file handle onto this variable. In newer perl versions the utf8 flag is reset on open() and print() to the variable's file handle. Greetings Gert