Php 小枝和撇号
我最近在一个PHP站点上实现了Twig。该站点有一个MySQL数据库,其中每个条目都是一个报告。在实现细枝撇号后,未正确显示细枝撇号。此问题的示例如下: 评估州政府的工人薪酬 网页上的字符集与以前相同 在使用Twig之前,我显示了这样的结果,一切正常:Php 小枝和撇号,php,twig,apostrophe,Php,Twig,Apostrophe,我最近在一个PHP站点上实现了Twig。该站点有一个MySQL数据库,其中每个条目都是一个报告。在实现细枝撇号后,未正确显示细枝撇号。此问题的示例如下: 评估州政府的工人薪酬 网页上的字符集与以前相同 在使用Twig之前,我显示了这样的结果,一切正常: echo "<table border='1' width=100%><tr>"; // printing table headers for($i=0; $i<$fields_num; $i
echo "<table border='1' width=100%><tr>";
// printing table headers
for($i=0; $i<$fields_num; $i++){
$field = mysql_fetch_field($result);
echo "<td>{$field->name}</td>";
}
while($row = mysql_fetch_assoc($result)){
echo "<tr>";
// $row is array... foreach( .. ) puts every element
// of $row to $cell variable
foreach($row as $cell)
echo "<td>$cell</td>";
echo "</tr>\n";
}
echo "</table>";
echo”“;
//打印表格标题
对于($i=0;$i),解决方案是使用防止自动转义
这涉及改变:
<td> {{ i.Title }) }} </td>
{{i.Title}}
致:
{{i.Title|raw}}
感谢Alain Tiemblo的评论为我指明了正确的方向。撇号没有正确显示。-它们是如何显示的?您可能有MS应用程序(如word)中常见的卷曲撇号。这将是一个字符编码问题。如果你说的是,那是因为出于安全原因,Twig使用自动转义。无论如何,它不会给浏览器带来麻烦。@ArtisiticPhoenix-为什么实现细枝会产生字符编码问题?@indigochild-因为htmlentities和卷曲/智能引号诅咒。(非SO链接)并且同样适用于ndash/mdash/ellipsist如果您确定在这些字段中没有可能使用html或用户
填充值,那么这是很好的。然而,更好的解决方案是将htmlentities
上的字符编码改为ISO-8859-1
(我认为就是这个),或者用“网络安全”字符替换有问题的字符。否则,如果用户可以提供任何i.Title,那么您的站点就可以使用XSS。您的数据库表也可能不是UTF-8。
<td> {{ i.Title }) }} </td>
<td> {{ i.Title|raw }) }} </td>