我对以下区别感到困惑.
$str="\xd6\xd0";
decode("GBK",$str);
Run Code Online (Sandbox Code Playgroud)
与
$str="d6d0";
@list=map "\\x".$_,unpack("(a2)*", $str);
$str=join "", @list;
decode("GBK",$str);
Run Code Online (Sandbox Code Playgroud)
为什么在第一种情况下,它打印出角色,而在第二种情况下,它不起作用?如何在后一种情况下使其工作?
非常感谢.
如果你想"d6d0"变成"\xd6\xd0",你想要pack 'H*':
my $str = "d6d0";
$str = pack('H*', $str);
decode("GBK",$str);
Run Code Online (Sandbox Code Playgroud)
join 不解释转义序列,它只是连接字符串.