在php中保存特殊字符


Saving special characters in php

我已经读了几个小时了,我无法完全理解编码问题。我正在使用PHP指定字符集=utf-8。我希望能够输入某些字符,例如项目符号•和箭头⇒进入文本区域。我直接保存到mySQL数据库中,符号正确存储在那里。为了显示数据库中保存的文本,我调用以下函数来翻译文本区域的存储符号。

function htmlspecialchars2($string, $flags=ENT_NOQUOTES){
$string = htmlspecialchars($string, $flags);    // to help prevent code injection
$string = str_replace(chr(149), "&#8226", $string);  // converts bullet to html
$string = str_replace("⇒", "&#8658",$string);   // don't know the ascii code for the arrow
return $string;
}

这对子弹有效,但对箭无效。关于如何保存(然后重新显示)扩展HTML字符的任何建议。我读了我能找到的所有东西,但缺少了一些东西。

您可能正在查找htmlentities。这应该将所有具有HTML字符实体等效项的字符转换为HTML实体(使用html_entity_decode进行反向转换)。


PS:在我的系统上,htmlentities('⇒', ENT_COMPAT, 'UTF-8')返回⇒

对于下面的任何人,该解决方案都有两部分

1) 正如One Trick Pony(谢谢!)所提到的那样,需要htmlentities,这才是真正的答案。

2) 然而,另一半需要显式地设置会话的编码。mysqli_set_charset($link,"utf8");

注意:新代码要简单得多。我可以简单地调用htmlentities($string,ENT_NOQUOTES,'UTF-8')