2012-09-04 42 views
0

我想给用户提供的字符串保存到MongoDB的,但保存到之前正常化这样做:修剪,小写字母,大写单词,并保存在MongoDB中

ucwords(mb_strtolower(trim($name)))

但是,这使得MongoDB的投一个带有“æøå”字符的MongoException。

我以为“mb_”使这个功能可以正常使用UTF-8吗?使用普通strtolower可以解决问题。

感谢

+0

也许'utf8_encode()'实际上首先将它变成utf8? :) –

回答

1

如果你是在PHP 5.4的默认字符集已经从从ISO-8859-1到UTF-8。

用strtolower应该为你做一个完美的工作,除非从$名称的编码不是ISO-8859-1或UTF-8

0

MongoDB中总是期望UTF-8字符串。

由于@JvdBerg说它取决于你的PHP,但在PHP 5.4之前的默认不是UTF-8,所以你需要使用iconvutf8_encode来“编码”字符串。很可能你使用的是旧的PHP,而字符串实际上是ISO编码。

mb_功能只是考虑多字节字符,当它做它的转换它不编码字符串。

相关问题