我正在获取一个带有法罗语名称的文件并尝试将其保存在 PHP 脚本中:
2010_08_Útflutningur.xls
在 Ubuntu 10.04 LTS 中将其保存为:
2010_08_�tflutningur.xls (invalid encoding)
我已经安装并运行了utf8-migration-tool
,但没有任何效果。
这是我可以修复的 Ubuntu 错误,还是我只需要放弃并修改 php 中的名称?
是否有文档说明 Ubuntu 中文件名的可接受字符集是什么,或者编码规范是什么?
谢谢
默认情况下,Ubuntu 使用 UTF-8 作为文件名。大多数现代 linux 发行版和许多其他操作系统都这样做(Windows/NTFS 是 UTF-16 最著名的例外)。
要修复名称编码错误的文件,例如您显示的文件,您可以尝试使用
nautilus-filename-repairer
您可以使用 PHP
iconv
函数将字符串(文件名)从一种编码转换为另一种编码。当然,这需要您知道它们的编码是什么。要从客户端获取正确编码的文件名,您可以尝试 eswald 解释的技术。
这看起来像一个编码问题。不幸的是,PHP 在编码方面需要一些帮助,因为它的字符串默认是单字节的。如果您在 PHP 中创建文件名,
utf8_encode()
应该会有所帮助;但是请注意,它假定输入为 ISO-8859-1 编码。另一方面,如果您使用的是客户端提交的文件名,也许您可以请求客户端为您进行编码。这是通过标签的
accept-charset
属性<form>
和/或通过设置表单所在页面的字符集来完成的。某些客户端可能会使用其中一个,因此为了获得最佳效果,每个客户端都使用 UTF-8。