Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Perl on Windows: Problems with Encoding

I have a problem with my Perl scripts. In UNIX-like systems it prints out all Unicode characters like ä properly to the console. In the Windows commandline, the characters are broken to senseless glyphs. Is there a simple way to avoid this? I'm using use utf8;.

Thanks in advance.

like image 247
Martin Avatar asked Dec 11 '22 17:12

Martin


1 Answers

use utf8; simply tells Perl your source is encoded using UTF-8.

It's not working on unix either. There are some strings that won't print properly (print chr(0xE9);), and most that do will print a "Wide character" warning (print chr(0x2660);). You need decode your inputs and encode your outputs.

In unix systems, that's usuaully

use open ':std', ':encoding(UTF-8)';

In Windows system, you'll need to use chcp to find the console's character page. (437 for me.)

use open ':std', ':encoding(cp437)';  # Encoding used by console
use open IO => ':encoding(cp1252)';   # Encoding used by files
like image 177
ikegami Avatar answered Dec 14 '22 06:12

ikegami