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

ChinaUnix.net

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

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

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

论坛徽章:
307
程序设计版块每周发帖之星
日期: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方法来做文件测试

论坛徽章:
307
程序设计版块每周发帖之星
日期: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 操作符的判断失败。不知道我理解的是否有误,还请指点一下,谢谢您再次帮助。

论坛徽章:
9
子鼠
日期: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:4315-16赛季CBA联赛之青岛
日期:2017-08-17 19:55:2415-16赛季CBA联赛之浙江
日期:2017-08-24 16:55:1715-16赛季CBA联赛之佛山
日期:2017-08-28 17:11:552016科比退役纪念章
日期:2017-09-02 15:42:47
发表于 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 模块

论坛徽章:
307
程序设计版块每周发帖之星
日期: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
好,非常感谢您的帮助。我一定仔细拜读。。。

论坛徽章:
0
发表于 2017-08-02 12:16 |显示全部楼层
用"\ "代替空格
来自苹果客户端来自客户端

论坛徽章:
0
发表于 2017-08-09 15:33 |显示全部楼层
sunzhiguolu 发表于 2017-04-15 11:42
RT,
如文件名 a b.txt, b c.txt

win+powershell没有你说的那些问题。

1 笑脸符,我不知道你说的是哪个?即unicode码是什么。我看到的笑脸符有两种,阴笑脸,阳笑脸。
2 随便搞个文本,起名为【aaa_ _☺_☻_.txt】。含英文空格,含阴阳笑脸。
3
  1. $a = dir '.\aaa_ _☺_☻_.txt'
  2. $a.basename
复制代码



dir后,打a,再打tab键即可。


论坛徽章:
0
发表于 2017-08-09 15:34 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-08-09 15:36 编辑

重复了,请版主删除。

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

本版积分规则

SACC2017购票8.8折优惠进行时

2017中国系统架构师大会(SACC2017)将于10月19-21日在北京新云南皇冠假日酒店震撼来袭。今年,大会以“云智未来”为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置2大主会场,18个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100余位技术专家及行业领袖来分享他们的经验;并将吸引4000+人次的系统运维、架构师及IT决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年8月2日前

活动链接>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP