为什么PHP的str_replace()会导致编码问题?
问题描述:
我有一个字符串,我通过str_replace()
,它似乎有一些编码,我无法弄清楚。为什么PHP的str_replace()会导致编码问题?
例如:
$str = "joined nearly 500 of the world’s investors .."; //shorted exceprt
$str = str_replace(' ', ' ', $str);
var_dump($str);
给出:
joined nearly 500 of the worldÂ’s investors
任何想法如何避免这种情况?
答
在您的输入中,您有一个不在其实体中的智能报价!另外,你可能想使用UTF-8这样试试这个:
$str = "joined nearly 500 of the world’s investors .."; //shorted exceprt
$str = htmlentities($str, ENT_QUOTES, "UTF-8");
$str = str_replace(' ', ' ', $str);
var_dump($str);
答
这已无关str_replace
或PHP,而是HTML /浏览器字符集编码。
您可以做到(在PHP中,先天下之忧):
header('Content-Type: text/html; charset=utf-8');
或(在你的HTML的head
部分 - HTML 5在这里):
<meta charset="utf-8">
另一种方法是更改浏览器的默认编码。
你有一个聪明的报价,而不是一个标准的撇号。 – MichaelRushton 2012-04-03 14:53:05
你确定这是你的PHP代理吗?您的HTML文件是否正确配置了编码?在这种情况下, – 2012-04-03 14:57:14
使用'utf8_encode' – kirilloid 2012-04-03 14:57:38