php mb_strtolower给出了无效的字符

时间:2010-08-30 10:34:01

标签: php unicode

以下代码正在创建问题。

var_dump($name);
$name = mb_strtolower($name);
var_dump($name);

输出

string(32) "brazil and technology, São Paulo"
string(32) "brazil and technology, s�o paulo"

有人可以解释为什么我的character字符无效吗?我在这里做错了什么?

mb_detect_encoding($name) says its UTF-8

1 个答案:

答案 0 :(得分:8)

mb_strtolower()有第二个参数来指定编码。如果省略,则使用mb_internal_encoding()的返回值。尝试显式添加该参数。如果您使用的是UTF-8:

 $name = mb_strtolower($name, "UTF-8");

如果这没有帮助,请确保在整个过程中的所有步骤中输入数据都是UTF-8,输出也是UTF-8。您可能正在使用IS-8859-1数据,这些数据会因strtolower操作而出现乱码。

相关问题