【发布时间】:2016-11-10 10:34:28
【问题描述】:
在我的网站上,我允许直接上传文本文件。然后将这些文件存储在服务器上,并显示在网站上。我在网站上使用 UTF-8。
现在,当人们上传包含特殊字符的非UTF-8 文件时,我遇到了麻烦,例如é。
我一直在做一些测试。制作了 2 个文本文件,都包含相同的单词 fiancée。一种编码 UTF-8 和一种编码 ISO 8859-2。
UTF-8 上传正常,显示文本正确,但 ISO 8859-2 显示为 fianc�e。
现在我尝试用mb_detect_encoding 检测上传的文件内容,但无论我扔给它什么文件,它总是检测到UTF-8。
我注意到我可以使用utf8_encode 将 ISO 8859-2 文件转换为有效的 UTF-8,但这仅适用于非 UTF 文件。由于我目前无法检测到非 UTF 文件,因此我无法使用 utf8_encode 函数,因为它会混淆有效的 UTF-8 文件。
希望这是有道理的:)
所以我的问题是,我如何才能检测到肯定不是以 UTF-8 编码开头的文件,以便我可以对它们使用 utf8_encode 函数。
【问题讨论】:
标签: php encoding utf-8 character-encoding