在Codeigniter中上传带有拉丁字符的文件,例如á,é,í,ó,ú和ñ

时间:2013-08-06 20:23:34

标签: php file codeigniter upload

您好我在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字符集和所有这些内容的配置。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

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