在网络应用程序中,我们允许用户通过上传CSV文件来添加数据。
有时,这些CSV文件中的字段包含特殊字符,例如François。
当它们包含这些内容时,上传通常会失败,因为名称字段是上传文件中的关键字段,而这些字段将返回为空。
我们已使用
设置表单编码<form accept-charset="UTF-8">
并且页面本身使用
编码为UTF-8<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
但上传的文件仍然“失败”。
作为测试,我们也尝试使用
utf8_encode();
在相关字段上但发生同样的问题。
如果最终用户在上传之前将相同的上传文件编码为UTF-8,那么它工作正常,但我们的大多数用户都不是非常技术性的,所以我们也可以说外星语言,试着让他们设置在上传文件上进行编码所以我们可以通过其他任何方式处理这个问题,我们可以强制/转换所有上传的文件为UTF-8吗?
答案 0 :(得分:2)
不久前我遇到了同样的问题,客户上传文本文件(同样的东西)和法语,然后在PHP文件中使用,以便读取/回显。
你需要做的就是这个。
如果您还没有将标题更改为以下内容:
header ('Content-type: text/html; charset=iso8859-15');
以上内容对于将其读作iso8859-15
而不是UTF-8非常重要。
然后再次使用utf8_encode();
函数。
为$file = utf8_encode ( $file );
旁注:我花了一些时间来完成这项工作(这很棘手)并且非常高兴它能够实现。
我必须说明正在阅读的文件(对于我的客户端)的方式是这样的,如果它有任何帮助:
$file = file_get_contents("$french_file", FILE_USE_INCLUDE_PATH);