为什么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 

任何想法如何避免这种情况?

+1

你有一个聪明的报价,而不是一个标准的撇号。 – MichaelRushton 2012-04-03 14:53:05

+1

你确定这是你的PHP代理吗?您的HTML文件是否正确配置了编码?在这种情况下, – 2012-04-03 14:57:14

+0

使用'utf8_encode' – kirilloid 2012-04-03 14:57:38

在您的输入中,您有一个不在其实体中的智能报价!另外,你可能想使用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"> 

另一种方法是更改浏览器的默认编码。

看到这个问题,最接受的答案从BalusC

PHP Parsing Problem - &nbsp; and Â

这是确切的答案如何解决你的问题。