我想给用户提供的字符串保存到MongoDB的,但保存到之前正常化这样做:修剪,小写字母,大写单词,并保存在MongoDB中
ucwords(mb_strtolower(trim($name)))
但是,这使得MongoDB的投一个带有“æøå”字符的MongoException。
我以为“mb_”使这个功能可以正常使用UTF-8吗?使用普通strtolower可以解决问题。
感谢
我想给用户提供的字符串保存到MongoDB的,但保存到之前正常化这样做:修剪,小写字母,大写单词,并保存在MongoDB中
ucwords(mb_strtolower(trim($name)))
但是,这使得MongoDB的投一个带有“æøå”字符的MongoException。
我以为“mb_”使这个功能可以正常使用UTF-8吗?使用普通strtolower可以解决问题。
感谢
如果你是在PHP 5.4的默认字符集已经从从ISO-8859-1到UTF-8。
用strtolower应该为你做一个完美的工作,除非从$名称的编码不是ISO-8859-1或UTF-8
MongoDB中总是期望UTF-8字符串。
由于@JvdBerg说它取决于你的PHP,但在PHP 5.4之前的默认不是UTF-8,所以你需要使用iconv
或utf8_encode
来“编码”字符串。很可能你使用的是旧的PHP,而字符串实际上是ISO编码。
mb_
功能只是考虑多字节字符,当它做它的转换它不编码字符串。
也许'utf8_encode()'实际上首先将它变成utf8? :) –