2020-05-12

vmware sdk输出乱码的问题

vmware的sdk里有个坑,考虑下面的代码

use VMware::VIRuntime;

use AppUtil::HostUtil;

Opts::parse();

print("中文");

输出:

中�

注释掉Opts::parse(),即可正常输出中文。追溯此问题,查看VMware::VILib.pm

sub parse {

  my ($pass_through_option) = @_;

  if (!defined($pass_through_option)) {

      $pass_through_option = 'no_pass_through';

  }

  parse_cmdline($pass_through_option);

  # bug 182644

  $app_name = $0;

  $0 = "Hiding the command line arguments";

  parse_environment;

  parse_config;

  parse_stdin;

  # user overwrites system encoding

  $enc = get_option('encoding');

  if ($enc eq "utf8") {

      $enc = getencname();

  }

  if (defined($enc)) {               #注意这一段

      binmode(STDIN, ":encoding($enc)");

      binmode(STDOUT, ":encoding($enc)");

      binmode(STDERR, ":encoding($enc)");

  }

  return;

}

所以如果想恢复正常输出,可以在代码中加上几行:

binmode(STDIN);

binmode(STDOUT);

binmode(STDERR);

感觉可能使用了错误的vmware sdk版本

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容