修剪,小写,大写单词并保存在MongoDb中

时间:2012-09-04 14:54:13

标签: php mongodb character-encoding

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

ucwords(mb_strtolower(trim($name)))

但这会让MongoDb抛出一个像“æøå”这样的字符的MongoException。

我认为“mb_”使该功能与UTF-8一起正常工作?使用普通的strtolower解决了这个问题。

由于

2 个答案:

答案 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之前默认,因此您需要使用iconvutf8_encode来“编码”字符串。您很可能正在使用旧的PHP,而字符串实际上是ISO编码的。

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