我正在尝试将用户提供的字符串保存到MongoDb中,但在保存到规范化之前执行此操作:
ucwords(mb_strtolower(trim($name)))
但这会让MongoDb抛出一个像“æøå”这样的字符的MongoException。
我认为“mb_”使该功能与UTF-8一起正常工作?使用普通的strtolower解决了这个问题。
由于
答案 0 :(得分:1)
如果您使用的是PHP 5.4,则默认字符集已从ISO-8859-1更改为UTF-8。
除非你的$ name编码不是ISO-8859-1或UTF-8 ,否则strtolower应该能为你做一个完美的工作。答案 1 :(得分:0)
MongoDB总是需要UTF-8字符串。
正如@JvdBerg所说,它取决于您的PHP,但在PHP 5.4不是UTF-8之前默认,因此您需要使用iconv
或utf8_encode
来“编码”字符串。您很可能正在使用旧的PHP,而字符串实际上是ISO编码的。
mb_
函数在执行转换时不会对字符串进行编码,只考虑多字节字符。