免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3293 | 回复: 7
打印 上一主题 下一主题

判定字符串是否为 utf8 的一个方法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-18 21:41 |只看该作者 |倒序浏览
  1. #!/bin/env perl

  2. use strict;
  3. use warnings;
  4. use Encode;

  5. sub is_utf8
  6. {
  7.     my ($content) = @_;
  8.     my $is_utf8;

  9.     return $is_utf8 if ($content !~ /[\x80-\xff]/);
  10.     my $encoded = decode("utf8", $content);
  11.     Encode::_utf8_off($encoded);
  12.     $is_utf8 = 1 if ($content eq $encoded);

  13.     return $is_utf8;
  14. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-04-18 22:02 |只看该作者
谢谢分享~{:3_183:}

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
3 [报告]
发表于 2011-04-18 22:05 |只看该作者
这个函数有啥用?
如果字符串里面保存的是 GBK 的 octet,那 decode 'utf8' 没意义啊。不如直接测试 SvUTF8 flag

论坛徽章:
0
4 [报告]
发表于 2011-04-18 22:15 |只看该作者
本帖最后由 黑色阳光_cu 于 2011-04-18 22:18 编辑
这个函数有啥用?
如果字符串里面保存的是 GBK 的 octet,那 decode 'utf8' 没意义啊。不如直接测试 SvUTF ...
zhlong8 发表于 2011-04-18 22:05



   
要判断文件是否为 utf8 编码的

如果 文件是 utf8 编码的,那 decode 'utf8' 后,唯一的区別就是那个 utf8 flag 了,关了 utf8 flag 再看看和原来字符串是否一致,就知道原来字符串是否是 utf8 编码的了

论坛徽章:
0
5 [报告]
发表于 2011-04-18 22:17 |只看该作者
嗯,还行......

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
6 [报告]
发表于 2011-04-18 22:20 |只看该作者
要判断文件是否为 utf8 编码的

如果 文件是 utf8 编码的,那 decode 'utf8' 后,唯一的区別 ...
黑色阳光_cu 发表于 2011-04-18 22:15



    给 decode 提供错误的编码类型会有什么后果?

论坛徽章:
0
7 [报告]
发表于 2011-04-18 22:22 |只看该作者
给 decode 提供错误的编码类型会有什么后果?
zhlong8 发表于 2011-04-18 22:20



没后果

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
8 [报告]
发表于 2011-04-18 22:27 |只看该作者
{:3_188:} 来个异常多给力啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP