免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: sunzhiguolu
打印 上一主题 下一主题

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

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
11 [报告]
发表于 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
12 [报告]
发表于 2017-04-18 16:39 |只看该作者
回复 11# sohusina
谢谢您的分析,非常感谢帮忙。

论坛徽章:
2
综合交流区版块每日发帖之星
日期:2016-07-06 06:20:00综合交流区版块每日发帖之星
日期:2016-08-16 06:20:00
13 [报告]
发表于 2017-04-19 11:01 |只看该作者
如果是*nix环境,用单引号引用即可

论坛徽章:
0
14 [报告]
发表于 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
15 [报告]
发表于 2017-05-06 21:01 |只看该作者
回复 14# zhouzhen1
谢谢您的回复,
我的文件名称多带有 Unicode 字符 (如:一些特殊字符, 在 Windows 环境), 这些文件名在我利用 opendir, opendirL 方法列取文件时
无法对 unicode 文件名进行正确的解码 导致利用 -e -f 操作符的判断失败。不知道我理解的是否有误,还请指点一下,谢谢您再次帮助。

论坛徽章:
12
子鼠
日期:2014-10-11 16:46:482016科比退役纪念章
日期:2018-03-16 10:24:0515-16赛季CBA联赛之山东
日期:2017-11-10 14:32:142016科比退役纪念章
日期:2017-09-02 15:42:4715-16赛季CBA联赛之佛山
日期:2017-08-28 17:11:5515-16赛季CBA联赛之浙江
日期:2017-08-24 16:55:1715-16赛季CBA联赛之青岛
日期:2017-08-17 19:55:2415-16赛季CBA联赛之天津
日期:2017-06-29 10:34:4315-16赛季CBA联赛之四川
日期:2017-05-16 16:38:55黑曼巴
日期:2016-07-19 15:03:112015亚冠之萨济拖拉机
日期:2015-05-22 11:38:5315-16赛季CBA联赛之北京
日期:2019-08-13 17:30:53
16 [报告]
发表于 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
17 [报告]
发表于 2017-05-16 17:34 |只看该作者
回复 16# 523066680
好,非常感谢您的帮助。我一定仔细拜读。。。

论坛徽章:
0
18 [报告]
发表于 2017-08-02 12:16 |只看该作者
用"\ "代替空格

论坛徽章:
0
19 [报告]
发表于 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
20 [报告]
发表于 2017-08-09 15:34 |只看该作者
本帖最后由 本友会机友会摄友会 于 2017-08-09 15:36 编辑

重复了,请版主删除。

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP