作者iFEELing (ing)
看板perl
标题Re: [问题] 请问 Net::SNMP 处理中文字串问题
时间Fri Oct 20 22:40:49 2006
※ 引述《iFEELing (ing)》之铭言:
: 您好,在下利用 Net::SNMP 模组向所管设备做了 gettable 的要求,
: 传回一个 hash array , 然後 print 出来
: 但是 hash array 之中的英文字串可以正常显示,
: 中文字串却变成一串十六进位数字....
: 1.3.6.1.2.1.25.6.3.1.2.84 : 84 : LevelOne Projector Server Player 1.9.4
: 1.3.6.1.2.1.25.6.3.1.2.72 : 72 :
: 0x57696e646f777320585020a677a5fea9caa7f3b77320284b4239313433383829
: 1.3.6.1.2.1.25.6.3.1.2.55 : 55 :
: 0x57696e646f777320585020a677a5fea9caa7f3b77320284b4239303131393029
: 试着用过 pack("c",hex($str)) 但是亦不能正确显示。
: 想请教该如何把它变回中文字码??
: 感谢~
好吧。 我又来自问自答了 XD
依据 Joe Smith <
[email protected]> 在 comp.lang.perl.misc
2005年9月30日(星期五) 下午6时57分 POST的 文章说
$value=pack "H*",$value;
这样子就可以把它转回去。
至於原因,刚刚在乱翻 Google Group 时好像有看到,
似乎是说, Perl 不晓得这东西是什麽格式的时候,
就会保留成 Hex-String ???
然後用 pack 把它包成 BER 格式,果然我原本的编码 (big5) 就跑出来了 XD
然後再用 Encode 转成 UTF-8 就搞定啦 哇哈哈哈哈哈.....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.22.18.89