【问题标题】:Show spanish characters in a form在表单中显示西班牙语字符
【发布时间】:2012-11-08 14:44:49
【问题描述】:

我有一个表单,我想在一个文本区域中显示一些包含一些西班牙字符但编码为 html 的文本。问题是它显示的不是西班牙语字符,而是 html 代码。我正在使用 htmlentities 在表单中显示它。我要显示的代码是:

<?php echo htmlentities($string, ENT_QUOTES, "UTF-8") ?>

有什么想法,或者我不应该在表单中使用 htmlentities?谢谢!

编辑 比如说$string = 'á'

当我只做&lt;?php echo $string ;?&gt; 我得到á 如果我这样做&lt;?php echo htmlentities($string, ENT_QUOTES, "UTF-8") ?&gt; 我会得到&amp;aacute;

我很困惑!

【问题讨论】:

  • 如果将 htmlentities 替换为 htmspecialchars 会得到想要的结果吗?

标签: php html forms character-encoding


【解决方案1】:

您可以尝试在文件顶部显式添加内容类型,如下所示

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

如果它已经被编码为 html 那么你现在需要解码它..你可以使用html_entity_decode($string);

您要在表单中回显的字符串应该是从数据库返回的&amp;aacute;,而不是á

$string = '&aacute;'; // your string as fetched from database
echo html_entity_decode($string);// this will display á in the textarea

在保存到数据库之前,您需要

htmlentities($_POST['txtAreaName'], ENT_QUOTES, "UTF-8"); // return `&aacute;`

【讨论】:

  • 试过了,还是不行。出于某种原因,当我不使用 htmlentities 时,它显示正常,但是一旦我使用它,它似乎会对其进行两次编码。
  • 如果&lt;?php echo $string ;?&gt; 回显了正确的文本,那么是否还有其他问题..??
  • 我想确保我做 htmlentities 以防 xss 攻击
  • &amp;aacute; 需要成为您的$string
【解决方案2】:
【解决方案3】:

您可能正在寻找 htmlspecialchars。

echo htmlspecialchars('<á>', ENT_COMPAT | ENT_HTML5, "UTF-8");

输出&amp;lt;á&amp;gt;

【讨论】:

  • 是的,现在它显示了 html 代码,但它没有显示用户友好的代码。意思是,对于 á 我得到 á .我希望它显示 á 但在 html 中显示为 á
  • 您确定以后不再转换您的 & 吗?
  • 我确定,html 只显示 á,它会显示 &aacute;
  • ENT_HTML5 与 htmlspecialchars 是多余的,请参阅 stackoverflow.com/a/14532168/427545
猜你喜欢
  • 1970-01-01
  • 2020-07-10
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 2023-03-18
  • 2017-04-23
  • 2011-04-26
  • 2012-01-04
相关资源
最近更新 更多