以下代码正在创建问题。

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"

有人可以解释为什么我的 ã 字符无效吗?我在这里做错了什么?
mb_detect_encoding($name) says its UTF-8

最佳答案

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

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

如果这没有帮助,请在整个过程中 100% 确保传入数据是 UTF-8,并且输出也是 UTF-8。很可能您正在处理被 strtolower 操作弄乱的 IS-8859-1 数据。

关于php mb_strtolower 给出无效字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3599571/

10-14 15:17
查看更多