字符串编码是编程的一个最麻烦的,到现在才理解。
当你拿到一个字符串,不知为何编码时,可以采用如下小技巧:
采用windows提供的一个函数,把原字符串str转成宽字符,需要给出原编码CP_ACP,在debug下查看输出结果pwcsLogTemp,如果是认识的文字,则说明该编码是对的,否则会显示乱码。
MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length() + 1, pwcsLogTemp, MAX_PATH * 12 - 8);
在perl中,如果想用utf输出一段中文,需要先用GB2312 decode一下,因为我们输入的中文,已经被perl自动转成GB2312了。
use Encode;
$data = "测试程序";
$str = decode("gb2312",$data);
print encode("UTF-8",$str),"\r\n";
也可在程序头加入 binmode STDOUT, ":encoding(utf8)"; 表示用utf8编码输出流的意思