忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT 视频 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12
最近访问板块 发新帖
楼主: sunzhiguolu

若文件名中包含空格字符 如何打开文件? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2017-04-18 12:31 |显示全部楼层
看了你的帖子我特意尝试了一下,我是试的笑脸符号放到文件名里面,结果在windows下很难通过,(linux下我没有试过)。我找了一下原因,笑脸符号属于unicode字符集,但是windows终端是gbk编码,而笑脸符号的0x236a已经超出了gbk的范围,也就是说,除非把输出终端的编码改成utf8模式可能才有解。这是我的分析,不知正确否?

论坛徽章:
302
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-04-18 16:39 |显示全部楼层
回复 11# sohusina
谢谢您的分析,非常感谢帮忙。

论坛徽章:
2
综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:00
发表于 2017-04-19 11:01 |显示全部楼层
如果是*nix环境,用单引号引用即可

论坛徽章:
0
发表于 2017-05-05 22:55 |显示全部楼层
回复 8# sunzhiguolu

两个点:1. print出现乱码,可能是需要在print的时候encode成gb2312(如果你是中文windows的话)
2. 文件测试不能直接用-e。如果看Win32::LongPath的SYNOPSIS段,你会发现它用的是一个testL方法来做文件测试

论坛徽章:
302
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-05-06 21:01 |显示全部楼层
回复 14# zhouzhen1
谢谢您的回复,
我的文件名称多带有 Unicode 字符 (如:一些特殊字符, 在 Windows 环境), 这些文件名在我利用 opendir, opendirL 方法列取文件时
无法对 unicode 文件名进行正确的解码 导致利用 -e -f 操作符的判断失败。不知道我理解的是否有误,还请指点一下,谢谢您再次帮助。

论坛徽章:
5
子鼠
日期:2014-10-11 16:46:482015亚冠之萨济拖拉机
日期:2015-05-22 11:38:53黑曼巴
日期:2016-07-19 15:03:1115-16赛季CBA联赛之四川
日期:2017-05-16 16:38:5515-16赛季CBA联赛之天津
日期:2017-06-29 10:34:43
发表于 2017-05-16 14:55 |显示全部楼层
本帖最后由 523066680 于 2017-05-16 14:57 编辑

针对 Windows 下的特殊文件名处理,我在这个帖子下做了各种总结

[总结]Perl在遇到Unicode字符文件名时的各种处理方法
http://code-by.org/viewtopic.php?f=17&t=131


如果要读取Unicode字符的文件列表 可以暂时用 `cmd /U dir /s /b` 的方法
/U参数开启Unicode输出模式

处理的使用 用Win32 API 系列模块,或者安装 Win32::Unicode 模块

论坛徽章:
302
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-05-16 17:34 |显示全部楼层
回复 16# 523066680
好,非常感谢您的帮助。我一定仔细拜读。。。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP