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