First of all, what you call "MSDOS screen" is actually called a "Windows console", possibly running "the Windows command shell".
The message yo are getting indicates you are printing non-bytes to a handle expecting bytes. In this case, you are printing decoded text without telling Perl to encode it. You can use the following to do that:
use Win32 qw( );
BEGIN {
binmode(STDIN, ':encoding(cp'. Win32::GetConsoleCP() .')');
binmode(STDOUT, ':encoding(cp'. Win32::GetConsoleOutputCP() .')');
binmode(STDERR, ':encoding(cp'. Win32::GetConsoleOutputCP() .')');
}
That said, I have doubts about the ability of your console to display Chinese characters. You might need to switch to the console's code page to 65001 (by using chcp 65001) and switch the console's font. That's not without issues.