文件编码问题

我收到一个带有faroese名称的文件并尝试将其保存在PHP脚本中:

2010_08_Útflutningur.xls 

在Ubuntu 10.04中,LTS将其保存为:

 2010_08_ tflutningur.xls (invalid encoding) 

我已经安装并运行了utf8-migration-tool ,但没有任何效果。

这是我可以解决的Ubuntu错误,还是我只需要放弃并修改php中的名称?

是否有一个文件说明Ubuntu中文件名的可接受字符集是什么,或者编码规范是什么?

谢谢

这看起来像编码问题。 不幸的是,PHP在编码时需要一些手持,因为它的字符串默认是单字节的。 如果您在PHP中创建文件名, utf8_encode()应该会有所帮助; 但请注意,它假定输入采用ISO-8859-1编码。

另一方面,如果您使用客户端提交的文件名,也许您可​​以请求客户端为您执行编码。 这是通过

标记的accept-charset属性和/或通过设置表单所在页面的charset来完成的。 某些客户可能会使用其中一个,因此为了获得最佳结果,请为每个客户使用UTF-8。

默认情况下,Ubuntu使用UTF-8作为文件名。 大多数现代Linux发行版和许多其他操作系统都这样做(Windows / NTFS是UTF-16最着名的例外)。

要修复名称与您显示的编码错误的文件,您可以尝试使用nautilus-filename-repairer

 sudo apt-get install nautilus-filename-repairer 

您可以使用PHP iconv函数将字符串(文件名)从一种编码转换为另一种编码。 当然,这要求您知道它们的编码方式。

要从客户端获取正确编码的文件名,您可以尝试使用eswald解释的技术。