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

4バイトのUnicodeをmysqlに挿入することによって発生する警告

    MySQLが4バイト以上のUTF-8コードを処理できない場合は、コードポイント\U00010000ですべてのUnicode文字を除外する必要があります。; UTF-8は、そのしきい値を下回るコードポイントを3バイト以下でエンコードします。

    そのために正規表現を使用できます:

    >>> import re
    >>> highpoints = re.compile(u'[\U00010000-\U0010ffff]')
    >>> example = u'Some example text with a sleepy face: \U0001f62a'
    >>> highpoints.sub(u'', example)
    u'Some example text with a sleepy face: '
    

    または、 .translate()を使用することもできます。 機能 Noneのみを含むマッピングテーブルを使用 値:

    >>> nohigh = { i: None for i in xrange(0x10000, 0x110000) }
    >>> example.translate(nohigh)
    u'Some example text with a sleepy face: '
    

    ただし、変換テーブルを作成すると、多くのメモリが消費され、生成に時間がかかります。正規表現のアプローチの方が効率的であるため、おそらく努力する価値はありません。

    これはすべて、UCS-4でコンパイルされたPythonを使用していることを前提としています。 PythonがUCS-2サポートを使用してコンパイルされている場合は、'\U0000ffff'までのコードポイントのみを使用できます。 正規表現では、そもそもこの問題に遭遇することはありません。

    MySQL 5.5.3の時点で、新しく追加された utf8mb4 コーデック Unicodeの全範囲をサポートしています。



    1. パラメータ化されたクエリの例

    2. SQLServerで現在使用されている言語を取得する

    3. カーディナリティ推定:密度統計の組み合わせ

    4. phpMyAdmin-エラー>フォーマットパラメータが正しくありませんか?