在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
淘宝网页中有下面字符: 价 格: 我最开始用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/[ \f\t\r\n ]//g |
请发表评论