Php 使用HTMLentities转义的UTF-8返回空白

Php 使用HTMLentities转义的UTF-8返回空白,php,csv,utf-8,html-entities,Php,Csv,Utf 8,Html Entities,我正在使用**MySQL的LOAD DATA INFILE命令将一个CSV文件导入我的数据库。 该文件不一定是UTF-8编码的,我对此没有任何控制权,因此我必须求助于预/后处理我的数据库和HTML网页都强制使用UTF-8编码。因为我确实加载了数据填充,所以我必须对其进行后期处理。因此,我从数据库中提取信息,并使用htmlentities应用我的后处理过滤器 foreach($records as $r) $updates[] = htmlentities($r["column

我正在使用**MySQL的LOAD DATA INFILE命令将一个CSV文件导入我的数据库。 该文件不一定是UTF-8编码的,我对此没有任何控制权,因此我必须求助于预/后处理我的数据库和HTML网页都强制使用UTF-8编码。因为我确实加载了数据填充,所以我必须对其进行后期处理。因此,我从数据库中提取信息,并使用htmlentities应用我的后处理过滤器

   foreach($records as $r)
       $updates[] = htmlentities($r["column"], ENT_COMPAT, 'UTF-8');
然后我再次更新DB表

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

具体而言,候选值为:

“PJ防风雨32®”

知道为什么吗

调用中的“UTF-8”参数承诺传入数据将是UTF-8。当数据不存在时,这将导致函数返回空值

您需要尝试并嗅探编码,这是一个不可靠的过程,只有在可能的编码集非常有限的情况下才能正常工作。见例


无论哪种方式,您都可以摆脱
htmlentities()
调用-它对这种情况没有任何帮助,只是在不需要的地方无用地添加HTML实体。

这不是您问题的答案,但您首先为什么要使用
htmlentities()
?应该没有必要。因为我不需要逃避这些无聊的事情吗?不。如果所有内容都是正确的UTF-8编码,那么就不需要HTML实体。它不一定在CSV文件中正确编码,这就是我必须进行后期处理的原因…对文件没有控制权,但是如果数据在CSV文件中没有正确编码,我看不出
htmlentities()
如何解决它。