0

嗨,我在 CodeIgniter 中使用包含拉丁字符的文件上传文件时遇到问题,当我上传它们时,我回显的名称正确显示,但在我上传文件的文件夹中,名称发生了变化,例如我有这个文件:

"Tour al Volcán del Totumo y a los Manglares.docx"

当我回显名称时,它会像这样显示,但在存储文件的文件夹中显示如下:

"Tour al Volcán del Totumo y a los Manglares.docx"

我到处寻找,但我无法解决这个问题,我还进行了诸如 utf-8 字符集之类的配置。

4

1 回答 1

1

文件夹中的文件也以特定的字符编码显示。即哪种编码取决于操作系统。

根据操作系统的不同,可能存在多个错误。

在 linux 上:事物存储为 UTF-8,但无论您用来查看文件夹(GUI、终端、sftp 客户端、ftp 客户端等什么)都设置为默认设置为 latin-1 / ISO-8559-1 和即使文件已正确存储,也无法正确显示。

在 Mac 上:文件在您的应用程序中以某种方式被双 UTF-8 编码。这意味着文件名已经是 UTF-8,并且您再次在字符串上调用 utf8_encode(这很糟糕!)

在 windows 上: PHP 仅支持 windows 上的 ANSI-filesystem api。实际上没有办法(不使用 COM)存储具有 unicode 文件名的文件,因为输入字符串总是被视为 CP-1252,并转换为 UTF-8。如果您使用的字符都存在于 CP-1252 中,您可以使用 iconv 或 mb_convert_encoding 将您的 UTF-8 输入转换为 CP-1252。

更多信息:http ://evertpot.com/filesystem-encoding-and-php (我的博客)

于 2013-08-06T20:29:39.413 回答