0

ユーザーが提供した文字列をMongoDbに保存しようとしていますが、保存して正規化する前にこれを行います:

ucwords(mb_strtolower(trim($name)))

しかし、これにより、MongoDb は "æøå" のような文字で MongoException をスローします。

「mb_」はUTF-8で機能を正常に動作させると思いましたか? プレーンな strtolower を使用すると、問題が解決します。

ありがとう

4

2 に答える 2

1

PHP 5.4 を使用している場合、デフォルトの文字セットが ISO-8859-1 から UTF-8 に変更されています。

$name からのエンコーディングが ISO-8859-1 または UTF-8 でない限り、strtolower は完璧な仕事をしてくれるはずです。

于 2012-09-04T15:02:48.817 に答える
0

MongoDB は常に UTF-8 文字列を想定しています。

@JvdBergが言うように、それはPHPに依存しますが、PHP 5.4より前のデフォルトはUTF-8ではないため、iconvまたはutf8_encode文字列を「エンコード」する必要があります。古い PHP を使用している可能性が高く、文字列は実際には ISO エンコードされています。

mb_関数は、文字列をエンコードしない変換を行うときにマルチバイト文字を考慮に入れるだけです。

于 2012-09-04T15:15:46.647 に答える