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

python-Djangoを使用してUnicode文字をMySQLに保存する際の問題

    ここに投稿してくださった皆様、ありがとうございました。それは私のUnicodeの知識に本当に役立ちます(そしてうまくいけば他の人が何かを学んだ)

    私は問題を単純化しようとし、すべての情報を提供しなかったので、私たちは皆間違った木を吠えているようでした。私は「REAL」ユニコード文字列を使用していなかったようですが、ユニコード文字列として自分自身を再現するBeautifulSoup.NavigableStringを使用していました。したがって、すべての印刷物はユニコードのように見えましたが、そうではありませんでした。

    MySQLDBライブラリのどこかで、これらの文字列を処理できませんでした。

    これはうまくいきました:

    >>> Achievement.objects.get(name = u"Mirror's Edge\u2122")
    <Achievement: Mirror's Edge™>
    

    一方:

    >>> b = BeautifulSoup(u"<span>Mirror's Edge\u2122</span>").span.string
    >>> Achievement.objects.get(name = b)
    ... Exceptoins ...
    UnicodeEncodeError: 'ascii' codec can't encode character u'\u2122' in position 13: ordinal not in range(128)
    

    しかし、これは機能します:

    >>> Achievement.objects.get(name = unicode(b))
    <Achievement: Mirror's Edge™>
    

    それで、すべてのユニコードの助けにもう一度感謝します、私はそれが役に立つと確信しています。しかし今のところ...

    警告 :BeautifulSoupは REALを返しません 文字列をユニコード化するため、意味のあることを行う前に、unicode()で強制する必要があります。



    1. MySQLのutf8エンコーディングに適していない不正な文字を削除するにはどうすればよいですか?

    2. SQLでGROUPBY句を使用する方法

    3. mysqlimportを使用してmysqldump--databasesの結果を読み取る方法

    4. DevOpsがDBaaS(Database-as-a-Service)を使用してアプリケーション開発を最適化する方法