【问题标题】:Uploading file with latin characters such as á,é,í,ó,ú and ñ in Codeigniter在 Codeigniter 中上传带有 á,é,í,ó,ú 和 ñ 等拉丁字符的文件
【发布时间】:2013-08-06 20:23:34
【问题描述】:

嗨,我在 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 字符集之类的配置。

【问题讨论】:

  • 您在哪里进行了这些配置?
  • 在 Codeigniter 的配置文件中,我添加了 $config['charset'] = 'UTF-8';还有什么我需要做的吗?
  • 是的,请参阅UTF-8 all the way through 获取一些通用建议(当然还有 Evert 的精彩总结)

标签: php file codeigniter upload


【解决方案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(我的博客)

【讨论】:

    猜你喜欢
    • 2014-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 2020-02-15
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多