0

我正在尝试将用户提供的字符串保存到 MongoDb 中,但在保存以规范化之前执行此操作:

ucwords(mb_strtolower(trim($name)))

但这使得 MongoDb 抛出一个带有“æøå”等字符的 MongoException。

我认为“mb_”使函数与 UTF-8 一起正常工作?使用普通的 strtolower 可以解决问题。

谢谢

4

2 回答 2

1

如果您使用的是 PHP 5.4,则默认字符集已从 ISO-8859-1 更改为 UTF-8。

strtolower 应该为您做得很好,除非您的 $name 编码不是 ISO-8859-1 或 UTF-8

于 2012-09-04T15:02:48.817 回答
0

MongoDB 总是需要 UTF-8 字符串。

正如@JvdBerg 所说,这取决于您的 PHP,但 PHP 5.4 之前的默认值不是 UTF-8,因此您需要使用iconvutf8_encode“编码”字符串。您很可能使用的是旧的 PHP,而字符串实际上是 ISO 编码的。

mb_函数在进行转换时仅考虑多字节字符,它不会对字符串进行编码。

于 2012-09-04T15:15:46.647 回答