我在 OSX El Capitan (10.11.3) 上插入了一个 NTFS 格式的外部硬盘。我无法读取一些带有“重音符号”的文件。
bash> ls
Document re´ponse - Partie 2.docx Test métier.pdf
当我这样做时ls -l
:
bash> ls -l
ls: Test métier.pdf: No such file or directory
total 1600
-rwxr-xr-x 2 guillaumethomas staff 323153 8 mar 2009 Document re´ponse - Partie 2.docx
我猜测编码存在问题,因为:
python> import os
python> os.listdir('.')
['Document re\xc2\xb4ponse - Partie 2.docx', 'Test me\xcc\x81tier.pdf']
python> map(lambda s: s.decode('Utf8'), os.listdir('.'))
[u'Document re\xb4ponse - Partie 2.docx', u'Test me\u0301tier.pdf']
两个文件名均采用 utf8 编码:
- 文件 1 使用尖锐重音与U+00B4 Unicode 字符
- 文件 2 使用结合尖音符与U+0301 Unicode 字符
我最好的猜测是编码是造成所有这些混乱的根本原因。几个问题: - 您认为是这样吗? - 我该如何解决这个问题? - 我如何确定文件存在(file
,du
命令都出现No such file or directory
错误)?
答案1
MacOS X 无法读取带有组合重音符号的文件名,如下所述:https://discussions.apple.com/thread/3545860?tstart=0
我不知道为什么。
我通过使用 python unicodedata normalize 函数修改 Linux 下的文件名来修复它:https://docs.python.org/2/library/unicodedata.html#unicodedata.normalize