MySQL 5.1 で 3 バイトの UTF-8 エンコーディングを超える Unicode 文字をフィルタリングする方法

Barbara Streisand
リリース: 2024-10-26 10:10:03
オリジナル
686 人が閲覧しました

How to Filter Unicode Characters Exceeding 3-Byte UTF-8 Encoding in MySQL 5.1?

3 バイト UTF-8 エンコーディングを超える Unicode 文字のフィルタリング

バージョン 5.1 の MySQL 実装には制限があり、3 バイトのみをサポートします。バイトの UTF-8 文字。 4 バイト文字を効果的に処理するために、このガイドでは、3 バイトを超える可能性のある Unicode 文字をフィルタリングまたは置換する解決策を提供します。

正規表現を使用した解決策:

1 つの方法は、正規表現を利用して、u0000 ~ uD7FF および uE000 ~ uFFFF の許容範囲外の文字を検出することです。 re モジュールを使用すると、次のようなパターンを作成できます。

pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
ログイン後にコピー

文字列をフィルターするには、 re.sub() を使用できます:

import re

re_pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
filtered_string = re_pattern.sub(u'\uFFFD', unicode_string)
ログイン後にコピー

代替ソリューションPython を使用する:

もう 1 つのオプションは、文字列内の各 Unicode 文字を反復処理し、4 バイトの UTF-8 エンコードの文字を置換文字 uFFFD:

def filter_using_python(unicode_string):
    return u''.join(
        uc if uc < u'\ud800' or u'\ue000' <= uc <= u'\uffff' else u'\ufffd'
        for uc in unicode_string
    )
ログイン後にコピー

パフォーマンスの比較:

これらのソリューションのパフォーマンスを比較するために、cProfile を使用してテストが実施されました。正規表現ベースのソリューションは、Python ベースのソリューションよりもパフォーマンスが大幅に優れていました。

結論:

提案された正規表現ソリューションは、Unicode をフィルタリングまたは置換するための効率的かつ信頼性の高い方法を提供します。 Python の 3 バイト UTF-8 エンコーディングを超える文字。これは、速度の最適化が重要な状況で特に有益です。

以上がMySQL 5.1 で 3 バイトの UTF-8 エンコーディングを超える Unicode 文字をフィルタリングする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!