免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3267 | 回复: 7

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

论坛徽章:
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
发表于 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
发表于 2011-04-18 22:05 |显示全部楼层
这个函数有啥用?
如果字符串里面保存的是 GBK 的 octet,那 decode 'utf8' 没意义啊。不如直接测试 SvUTF8 flag

论坛徽章:
0
发表于 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
发表于 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
发表于 2011-04-18 22:20 |显示全部楼层
要判断文件是否为 utf8 编码的

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



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

论坛徽章:
0
发表于 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
发表于 2011-04-18 22:27 |显示全部楼层
{:3_188:} 来个异常多给力啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP