PDO::MYSQL_ATTR_INIT_COMMAND を使用する場合、「SET CHARACTER SET utf8」は必要ですか?
PDO ベースの PHP アプリケーションでは、次のような問題がよく発生します。 「SET NAMES utf8」と「SET CHARACTER SET」の両方を使用する必要性に関する質問MySQL で UTF-8 を使用する場合は、utf8" を使用します。 「SET NAMES utf8」はクライアント文字セット、結果文字セット、および接続文字セットを設定しますが、「SET CHARACTER SET utf8」はクライアント文字セットと結果文字セットのみを設定し、接続照合順序は設定されません。
「SET CHARACTER SET utf8」は必須ですか?
「SET CHARACTER SET」の使用「SET NAMES utf8」の後に「utf8」を実行すると、接続文字セットと照合順序がデータベースのデフォルトに効果的にリセットされます。これにより、クエリ処理中に文字が失われる可能性があります。 UTF-8 を完全にサポートするには、「SET CHARACTER SET」の代わりに「SET NAMES」を使用することが重要です。
文字セット管理プロセスについて
MySQL が採用しているクエリと結果の複数ステップのエンコード/トランスコード手順:
排他的な "SET CHARACTER SET utf8" の結果
"SET CHARACTER SET utf8" を単独で使用すると、文字が失われる可能性があります次のシナリオでは:
結論
「SET CHARACTER SET utf8」のみに依存する誘惑に駆られますが、「SET NAMES」を使用すると、次のような包括的な UTF-8 処理が保証されます。クライアント文字セット、結果文字セット、接続文字セットを適切に設定します。適切な MySQL サーバー変数を設定すると、接続ごとにこれらのクエリが不要になり、パフォーマンスが最適化されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3