我在Linux(Ubuntu)终端中遇到了一些文件名带有重音符号的问题。例如:
$ ls dir/
criação.png
因此,终端会返回该文件,说明它存在。现在让我们用这个简单的命令来查看文件是否存在:
$ [ -f criação.png ] && echo "File Exist" || echo "Not Exist"
Not Exist
正如您所看到的,“不存在”。现在,我在OSX上有相同的文件夹和文件,然后运行相同的命令,它返回以下结果:
$ [ -f criação.png ] && echo "File Exist" || echo "Not Exist"
File Exist
我了解一些关于本地化的知识:
$ locale
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
在linux系统上,文件不存在,而在OSX系统上,文件存在。有人知道如何解决这个问题吗?
也许这些链接可以帮到你:
http://nedbatchelder.com/blog/201106/filenames_with_accents.html
http://www.ruby-forum.com/topic/279105 更新 - 解决方案 我最终找到了解决该问题的方法。你需要将文件名从NFD重命名为NFC,以下是修复所有文件的命令:
cd dir/
convmv -r -i -f utf8 -t utf8 --nfc --notest .
来源:http://blog.hbis.fr/2010/08/30/macox-utf8_filenames_normalization/
这篇文章讨论了Mac OS X对UTF-8文件名的标准化问题,以及如何在Cocoa应用程序中处理它们。通常情况下,如果您使用的是UTF-8编码并且遵循Unicode规范,则Mac OS X文件系统会自动标准化文件名。然而,某些字符序列可能会被视为等效而引起问题,因此需要进行手动标准化。Cocoa提供了一些方便的方法来处理这种情况。
2012/11/08 17:05:34 [error] 12102#0: *128 open() "/usr/share/nginx/www/wp-content/uploads/2012/09/celular-inclusão-digital.png" failed (2: No such file or directory), client: 66.249.76.145, server: site.com, request: "GET /wp-content/uploads/2012/09/celular-inclus%C3%A3o-digital.png HTTP/1.1", host: "site.com"
- mateussouzaweb