Chinaunix

标题: perl 读取excel 无法匹配 [打印本页]

作者: ac_3    时间: 2014-02-13 21:05
标题: perl 读取excel 无法匹配
     如:
     $cell1 =$sheet->{Cells}[0][0];
     $value=$cell1->{Val};
     如$value读出来为Machine, 但是做$value=~/Mac/匹配判断时,却显示匹配失败,经过试验,只能匹配第一个字符(M),不能匹配整个字符串,这是为何?
作者: q1208c    时间: 2014-02-14 08:02
把你的 print 结果发上来看看. 没听说这么不科学的事.
作者: ac_3    时间: 2014-02-19 18:12
就是这么不科学啊,只能匹配一个字符,多了就不行。

代码:
     $sheet->{MaxCol} ||= $sheet->{MinCol};
     $cell_1 =$sheet->{Cells}[$row][0];
     $item=$cell_1->{Val};
     if ($item=~/Ma/){print "HI,$item\n";}else{print "$item not match with Ma\n";}

输出:
    Machine ID : not match with Ma

作者: ac_3    时间: 2014-02-20 18:37
把print的内容导出到文件在windows下打开后终于看到它的真面目了:
每个字符之间都多了一个空字符(不是空格哦),copy 还copy不过来,只能拷屏了。
这个Nul 字符该如何把它去掉呢?

二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义
0000 0000 0 00 NUL ␀ 空字符(Null)

1.JPG (3.6 KB, 下载次数: 26)

1.JPG

作者: jason680    时间: 2014-02-20 18:47
回复 4# ac_3

it seems be unicode with utf-16

http://zh.wikipedia.org/zh-cn/UTF-16
   
作者: ac_3    时间: 2014-02-20 18:55
有没有最简单的处理方法啊?
作者: flw    时间: 2014-03-03 10:56
就是个编码问题。
decode 一下就可以了。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2