我想給用戶提供的字符串保存到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? :) –