Comment puis-je filtrer les caractères Emoji de mon entrée afin que je puisse enregistrer dans MySQL & Lt; 5.5?

J'ai un Django app qui prend tweet de données de l'API Twitter et l'enregistre dans une base de données MySQL. Autant que je sache (je suis encore à obtenir ma tête autour des points les plus fins de codage de caractères) je suis en UTF-8 partout, y compris MySQL encodage et le classement, qui fonctionne très bien, sauf quand un tweet contient Emoji personnages, dont je comprends l'utilisation de quatre octets codage. En essayant de sauver leur produit est le suivant avertissements de Django:

/home/biggleszx/.virtualenvs/myvirtualenv/lib/python2.6/site-packages/django/db/backends/mysql/base.py:86: Attention: Pas de chaîne de valeur: '\xF0\x9F\x98\xAD-je... "pour la colonne "texte" à la ligne 1
retour auto.le curseur.execute(requête, args)

Je suis de l'utilisation de MySQL 5.1, donc à l'aide d' utf8mb4 n'est pas une option, sauf si je mettre à 5.5, que je ne voudrais pas tout de suite (également à partir de ce que j'ai lu, Django appuie ce n'est pas tout à fait prêt à la production, même si cela pourrait ne plus être à jour). J'ai aussi vu les gens de conseiller l'utilisation de BLOB à la place du TEXTE sur les colonnes, je serais aussi plutôt ne pas faire ce que je me dis qu'il serait préjudiciable à la performance.

Ma question est, puis, en supposant que je ne suis pas trop gêné à environ 100% de la préservation de l'tweet contenu, est-il possible que je peux filtrer tous les caractères Emoji et de les remplacer par un non-caractères codés sur plusieurs octets, tels que le vénérable WHITE MEDIUM SMALL SQUARE (U+25FD)? Je me figure ce est la façon la plus simple pour enregistrer des données compte tenu de ma configuration actuelle, même si, il me manque une autre solution évidente, je serais ravi de l'entendre!

Pour info, je suis en utilisant le stock Python 2.6.5 sur Ubuntu 10.04.4 LTS. sys.maxunicode est 1114111, c'est donc un UCS-4 construire.

Merci pour la lecture.

source d'informationauteur BigglesZX | 2012-12-05