JSONとBSONは、有効なUTF-8文字列のみをエンコード/デコードできます。データ(入力を含む)がUTF-8でない場合は、次のように、JSON依存システムに渡す前に変換する必要があります。
$string = iconv('UTF-8', 'UTF-8//IGNORE', $string); // or
$string = iconv('UTF-8', 'UTF-8//TRANSLIT', $string); // or even
$string = iconv('UTF-8', 'UTF-8//TRANSLIT//IGNORE', $string); // not sure how this behaves
個人的には最初のオプションが好きです。iconv()
を参照してください。 マニュアルページ。その他の選択肢は次のとおりです。
-
mb_convert_encoding()
-
utf8_encode(utf8_decode($string))
ユーザーが送信した文字列であっても、文字列がUTF-8でエンコードされていることを常に確認する必要がありますが、MySQLからMongoDBに移行すると述べたので、現在のデータベースをCSVにエクスポートし、付属のインポートスクリプトを使用してみましたか?モンゴと?彼らはこれを処理する必要があります...
編集: BSONはUTF-8しか処理できないと述べましたが、これが正確に正しいかどうかはわかりません。BSONがUTF-16またはUTF-32を使用してデータをエンコード/デコードするという漠然とした考えがありますが、確認できません。今。