加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl去除字符串中的空格有问题

发布时间:2020-12-15 20:58:21 所属栏目:大数据 来源:网络整理
导读:淘宝网页中有下面字符: 价 格: 我最开始用perl试图去除中间的空格时用s/s//g,发现根本没反应。 淘宝的这个空格不是我们想像中的空格! 后来我想是不是编码的问题,因为网页的编码是GBK,而perl默认处理的都是UTF-8,所以转了一下。 iconv -f GBK -t UTF-

淘宝网页中有下面字符:

价  格:

我最开始用perl试图去除中间的空格时用s/s//g,发现根本没反应。

淘宝的这个空格不是我们想像中的空格!

后来我想是不是编码的问题,因为网页的编码是GBK,而perl默认处理的都是UTF-8,所以转了一下。

iconv -f GBK -t UTF-8 file1 -o file2

将Google香港的Big5编码转换成GBK编码

curl -s http://www.google.com.hk/ | iconv -f big5 -t gbk

依旧没反应。实际上perl在处理字符串时读入内存的时候已统一转换成了UTF-8编码,不需要我们劳神费心,只是把字符串处理完输出的时候又成乱码了。如果你需要输出就手动转换一下,在程序里可以用Encode::from_to或Unicode::MapUTF8::to_utf8,如果你不需要输出就不需要事先转换。

淘宝的这个空格和我们想像中的空格到底有什么区别?

我新建一个文件,把淘宝“价格”之间的那两个空格复制到第一行,查看文件的十六进制编码。

然后第二行自己输了两个空格,再次查看文件的十六进制编码。

淘宝的一个空格用e3 80 80来表示,我的一个空格用20来表示,0a应该代表换行。

那我如何把淘宝的空格去掉呢?直接把淘宝的空格复制到正则表达式中吧:

s/[ ftrn ]//g

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读