UTF-8 互換性のための Unicode 文字のフィルタリング
MySQL では、UTF-8 エンコーディングは 3 バイトを超える文字を必要とする文字をサポートしません。 MySQL の制限による問題を回避するには、これらの文字をフィルタリングまたは置換する必要があります。
Unicode 文字のフィルタリング
サポートされていない Unicode 文字をフィルタリングする 1 つの方法は、正規表現を使用することです。 。次の正規表現は、3 バイトの UTF-8 制限を超える文字を識別します:
pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
このパターンを使用すると、サポートされていない文字を公式の ufffd 文字 (U FFFD) などの置換文字で置き換えることができます。 REPLACEMENT CHARACTER):
filtered_string = pattern.sub(u'\uFFFD', unicode_string)
フィルタリング方法の比較
正規表現や内包表記など、Unicode 文字をフィルタリングするためのさまざまな方法が提案されています。プロファイリング テストで実証されているように、比較すると、正規表現アプローチが他のアプローチよりも大幅に高速であることがわかります。
# filter_using_re: 0.139 CPU seconds # filter_using_python: 3.413 CPU seconds
結論
正規表現アプローチは効率的なソリューションを提供します。 MySQL の UTF-8 制限を超える Unicode 文字をフィルタリングします。このメソッドを使用すると、文字をエスケープしたりエスケープ解除したりせずに Unicode 文字列を維持できます。
以上が質問形式の記事タイトルには次のようなオプションがあります。 * MySQL で Unicode 文字をフィルタリングして UTF-8 互換性を確保するにはどうすればよいですか? * フィルタリングの最も効率的な方法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。