htmlspecialchars() 导致变量 return 空白数据?
htmlspecialchars() is causing a variable to return blank data?
我正在使用 mysqli 和 PHP 从数据库中提取数据。
这工作正常,但我得到一个随机字符(黑色问号)替换单词中的撇号,所以我想我可以使用 htmlspecialchars()
函数让它们正确显示,但它不起作用。
所以我的代码看起来像这样
while($row = $result->fetch_assoc())
{
$desc = htmlspecialchars($row['description'], ENT_QUOTES);?>
<div class="timeline-key">
<div class="fluid key-content">
<p><?php echo $desc?></p>
</div>
</div><?php
}
现在数据库中包含撇号 $desc 的任何记录都不会打印任何内容,所有其他记录都可以打印出来吗?
现在,如果我尝试对未从数据库中提取的字符串进行完全相同的操作,它会显示它好吗?
从您链接的网站可以看出,该页面本身使用 UTF-8 进行字符编码 (<meta charset="UTF-8">
)。您从中获取数据的数据库似乎使用了不等于 ini_get("default_charset")
值的字符编码。 If you get the encoding wrong, htmlspecialchars
will return the empty string,这就是您在这里看到的。
解决方案是在您使用的字符编码方面保持一致(或明确说明)。当您对所有内容使用一种字符编码时,这会简单得多。让我们以 UTF-8 为例:
- 告诉浏览器您使用的是 UTF-8。您已经使用 meta 标记这样做了,这很好。
- Tell PHP you're using UTF-8. 确保 php.ini 将
default_charset
设置为 UTF-8
.
- Tell MySQL you're using UTF-8. 确保数据库中的表使用 UTF-8 作为编码 -edit- 或告诉 MySQL 接口使用UTF-8.
或者,您可以使用 mb_convert_encoding
之类的函数在浏览器期望的、PHP 假设的和 MySQL 使用的不同字符编码之间转换字符串存储和提供文本。
我正在使用 mysqli 和 PHP 从数据库中提取数据。
这工作正常,但我得到一个随机字符(黑色问号)替换单词中的撇号,所以我想我可以使用 htmlspecialchars()
函数让它们正确显示,但它不起作用。
所以我的代码看起来像这样
while($row = $result->fetch_assoc())
{
$desc = htmlspecialchars($row['description'], ENT_QUOTES);?>
<div class="timeline-key">
<div class="fluid key-content">
<p><?php echo $desc?></p>
</div>
</div><?php
}
现在数据库中包含撇号 $desc 的任何记录都不会打印任何内容,所有其他记录都可以打印出来吗?
现在,如果我尝试对未从数据库中提取的字符串进行完全相同的操作,它会显示它好吗?
从您链接的网站可以看出,该页面本身使用 UTF-8 进行字符编码 (<meta charset="UTF-8">
)。您从中获取数据的数据库似乎使用了不等于 ini_get("default_charset")
值的字符编码。 If you get the encoding wrong, htmlspecialchars
will return the empty string,这就是您在这里看到的。
解决方案是在您使用的字符编码方面保持一致(或明确说明)。当您对所有内容使用一种字符编码时,这会简单得多。让我们以 UTF-8 为例:
- 告诉浏览器您使用的是 UTF-8。您已经使用 meta 标记这样做了,这很好。
- Tell PHP you're using UTF-8. 确保 php.ini 将
default_charset
设置为UTF-8
. - Tell MySQL you're using UTF-8. 确保数据库中的表使用 UTF-8 作为编码 -edit- 或告诉 MySQL 接口使用UTF-8.
或者,您可以使用 mb_convert_encoding
之类的函数在浏览器期望的、PHP 假设的和 MySQL 使用的不同字符编码之间转换字符串存储和提供文本。