Php htmlentities返回空字符串

Php htmlentities返回空字符串,php,html-entities,Php,Html Entities,下面的代码输出一个空字符串。原因是$text中的“ó”,但为什么?utf-8编码什么字符 当使用iso-8859-1时,问题得到了解决,但我需要使用utf-8,那么我做错了什么 <!doctype html> <head> <meta charset="utf-8"> </head> <body> <? $text = 'Hola ó Hola'; $text = htmlentities($text,ENT_QUOTES,

下面的代码输出一个空字符串。原因是$text中的“ó”,但为什么?utf-8编码什么字符

当使用iso-8859-1时,问题得到了解决,但我需要使用utf-8,那么我做错了什么

<!doctype html>
<head>
  <meta charset="utf-8">
</head>

<body>
<?
$text = 'Hola ó Hola';
$text = htmlentities($text,ENT_QUOTES,'utf-8');
echo $text;
?>
</body>
</html>


如果源文件包含字符串,请确保将其保存为UTf-8。否则,请确保提供字符串的任何内容都以UTF-8的形式提供它。

我遇到了类似的问题,并使用了标记ENT\U替换来防止空字符串。它仍然没有编码,而且我不能依赖文件是UTF-8,所以我只转换了字符串编码:

$text = htmlentities(mb_convert_encoding($text, 'UTF-8', 'ASCII'), ENT_SUBSTITUTE, "UTF-8");
  • 打开代码编辑器(例如记事本++或其他)
  • 单击
    New>另存为..
    输入文件名(空白一段时间),然后键入select
    PHP超文本…
  • 现在复制原始文件的所有内容并放入此新文件
  • 单击保存并重试

  • 奇怪,你的代码在我的电脑上似乎运行得很好。(返回
    ó;
    )-我唯一更改的是更改
    我想我可能是将文件保存在错误的字符集中了?有可能吗?如果文本的来源是一篇$\u文章呢?我从哪里获得字符集编码?如果
    POST
    请求来自同一网站上发出
    utf-8
    meta字符集的表单,您可以假设输入字符集也将是
    utf-8
    (您的浏览器应该遵守发出的任何字符集标题,但用户可以自行决定不这样做)。我想您可以尝试一些PHP函数,看看PHP认为字符集是什么;像
    iconv\u get\u encoding
    但是我使用它的成功率参差不齐。谢谢。是否有任何资源/指南可以帮助我更好地理解字符集?我只是被这么多的字符集弄糊涂了:上的字符集,MySQL排序规则上的字符集,保存文件的字符集。这把我弄糊涂了:坑真的很简单。始终对所有内容使用
    utf-8
    。源文件,
    MySQL名称
    who shebang。但是,是的,你必须始终明确你想要的是
    utf-8
    ,因为出于某种奇怪的原因,它不是默认值。问题是,据我所知,我什么都用utf-8,但有些东西没有被编码!我怎样才能亲自联系你,以便解释我的错误这是一个对我有用的选项,因为字符串不是空的,但它没有显示特殊字符,这些字符只是从字符串中省略了。有没有关于如何让这些特别的角色出现的想法?在我的例子中,它是一个项目符号,从旧数据库读入也可以工作。