【问题标题】:PHP - Anything after ASCII char being dropped at file_get_contents()PHP - 在 file_get_contents() 中删除 ASCII 字符后的任何内容
【发布时间】:2013-08-15 09:27:25
【问题描述】:

我正在尝试上传 CSV 并将其内容保存在数据库中以供以后处理。 CSV 文件恰好在某个位置有一个 ASCII 字符。这是 CSV 中的一个单元格

inflatable?ÿtavel?ÿpillow

现在,当尝试使用 PHP(准确地说是 cakePHP)将该文件读入数据库时​​,file_get_contents() 会忽略第一个 ÿ 之后的所有内容

$fh = fopen($_FILES['uploadedFile']['tmp_name'], 'rb');            
$this->request->data['ChannelUpload']['data'] = file_get_contents($_FILES['uploadedFile']['tmp_name']);

【问题讨论】:

  • 这正是不是一个“ASCII字符”,它是一个非ASCII字符。您如何确认file_get_contents 正在删除数据?它可能与它的关系最小。
  • echo file_get_contents($_FILES['uploadedFile']['tmp_name']); 是否也有同样的问题,还是可以正常读取整个文件?
  • 另外,为什么fopen + file_get_contents
  • 另外,你不应该使用 Cake 的文件上传处理基础设施吗?

标签: php ascii


【解决方案1】:

在 php.net 上查看:

  <?php
    function file_get_contents_utf8($fn) {
         $content = file_get_contents($fn);
          return mb_convert_encoding($content, 'UTF-8',
              mb_detect_encoding($content, 'UTF-8, ISO-8859-1', true));
    }
    ?>

【讨论】:

  • 没有人说这个不是是UTF-8,那么你提议随机编码转换是为了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-27
  • 1970-01-01
相关资源
最近更新 更多