使用HTML实体转义的UTF-8返回空白

时间:2013-07-11 19:27:25

标签: php csv utf-8 html-entities

我正在使用** MySQL'LOAD DATA INFILE 命令将 CSV文件导入我的数据库。 该文件不一定是 UTF-8编码,我对此没有任何控制权,所以我必须求助于前/后处理。 我的数据库和HTML网页都强制执行UTF-8编码 。由于我加载数据infile,我必须发布这个过程。所以我从数据库中提取信息并使用htmlentities应用我的后处理过滤器。

   foreach($records as $r)
       $updates[] = htmlentities($r["column"], ENT_COMPAT, 'UTF-8');

然后我再次更新数据库表。

列在后处理之前就像它们应该进入表中一样,但在此之后,列变为空白,这意味着htmlentities返回一个空白,这是HTML的有效返回值。

具体候选值是:

“PJ Weatherproof32®”

知道为什么吗?

1 个答案:

答案 0 :(得分:2)

您的通话中的“UTF-8”参数承诺htmlentities()传入的数据将为UTF-8。当数据不存在时,将导致函数返回空白值。

你需要尝试嗅探编码,这是一个不可靠的过程,只有在你有一组非常有限的编码时才能正常工作。参见例如this answer.

无论哪种方式,你都可以摆脱htmlentities()调用 - 它无助于解决这种情况,只是无用地在不需要的地方添加HTML实体。