Perl: printing Unicode strings to the Windows console

后端 未结 4 1335
独厮守ぢ
独厮守ぢ 2021-01-04 23:02

I am encountering a strange problem in printing Unicode strings to the Windows console*.

Consider this text:

אני רוצה לישון

Intermediary

היא רוצה ל         


        
4条回答
  •  一个人的身影
    2021-01-04 23:49

    Did you try the solution from perlmonk ?

    It use :unix as well to avoid the console buffer.

    This is the code from that link:

    use Win32::API;
    
    binmode(STDOUT, ":unix:utf8");
    
    #Must set the console code page to UTF8
    $SetConsoleOutputCP= new Win32::API( 'kernel32.dll', 'SetConsoleOutputCP', 'N','N' );
    $SetConsoleOutputCP->Call(65001);
    
    $line1="\x{2554}".("\x{2550}"x15)."\x{2557}\n";
    $line2="\x{2551}".(" "x15)."\x{2551}\n";
    $line3="\x{255A}".("\x{2550}"x15)."\x{255D}";
    $unicode_string=$line1.$line2.$line3;
    
    print "THIS IS THE CORRECT EXAMPLE OUTPUT IN PURE PERL: \n";
    print $unicode_string;
    

提交回复
热议问题