关于encode和decode的问题,大家帮忙看看

关于encode和decode的问题,大家帮忙看看

如果没错的话,$name=enco.
如果没错的话,$name=encode("gb2312",$name); 应该就可以了,$validate_result 的返回值为utf8编码,且SOAP::Lite已经通知了perl 变量 $validate_result 的返回值为utf8编码,相当于 SOAP::Lite 已经做了 decode 的工作,decode的工作像这样


utf8编码字串 --(作为字节流)--> perl不知道它是什么编码 ---> decode ('utf8',$foo) ---> perl知道他是utf8编码了,并将其转换为对应的unicode(两个字节)来操作(但实际存储的时候仍是utf8编码)

之所以会出现 Wide character in print at 2.pl line 19. 这样的结果,是因为perl知道你输出的变量字符串是utf8编码的多字节字符,你应该通过encode函数将该变量转换成字节流,这样perl就不会出现这个警告

综上,可以知道,perl对待外来的数据一律当作字节流处理,通过 decode 函数可以告诉 perl 当前字节流是什么编码,这时 perl 就会把他按照原来对应的编码方式内部解码为 unicode 来操作(此时这串字节流已经被perl当作是有一定意义的unicode字符串来理解了),当你要将操作完的字符串输出的时候,应该将其用encode函数按照相应的编码方式打包成字节流再输出.




   

ok了,太感谢了,又长知识.
ok了,太感谢了,又长知识了~~[CCB]1[/CCB]