sql >> データベース >  >> RDS >> Mysql

MySQL <5.5で保存できるように、入力から絵文字をフィルタリングするにはどうすればよいですか?

    ですから、これは何度か答えられていることがわかりました。既存の質問を見つけるための適切なGoogle-fuを持っていなかっただけです。

    MartijnPieters に感​​謝します 、解決策は正規表現の世界、具体的にはこのコード(上記の最初のリンクに対する彼の回答に基づく)から来ました:

    import re
    try:
        # UCS-4
        highpoints = re.compile(u'[\U00010000-\U0010ffff]')
    except re.error:
        # UCS-2
        highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
    # mytext = u'<some string containing 4-byte chars>'
    mytext = highpoints.sub(u'\u25FD', mytext)
    

    置き換えているキャラクターはWHITE MEDIUM SMALL SQUARE (U+25FD)です。 、参考までに、しかし何でもかまいません。

    私のようにUCSに慣れていない人のために、これはUnicode変換用のシステムであり、Pythonの特定のビルドには、UCS-2またはUCS-4バリアントのいずれかのサポートが含まれ、それぞれの文字サポートの上限が異なります。

    このコードを追加すると、文字列はMySQL5.1で問題なく存続するように見えます。

    これが同じ状況で他の誰かに役立つことを願っています!



    1. MySQL内部結合クエリ複数のテーブル

    2. JSON_SET()–MySQLのJSONドキュメントに値を挿入または更新します

    3. 集計を含む式で集計関数を実行できないのに、その周りに新しいselectステートメントを作成することで実行できるのはなぜですか?

    4. MySQLは省略記号でテキストを切り捨てます