Maison > base de données > tutoriel mysql > Comment filtrer les caractères Unicode dépassant l'encodage UTF-8 de 3 octets dans MySQL 5.1 ?

Comment filtrer les caractères Unicode dépassant l'encodage UTF-8 de 3 octets dans MySQL 5.1 ?

Barbara Streisand
Libérer: 2024-10-26 10:10:03
original
816 Les gens l'ont consulté

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

Filtrage des caractères Unicode dépassant l'encodage UTF-8 de 3 octets

L'implémentation MySQL dans la version 5.1 a une limitation, où elle ne prend en charge que 3- octets de caractères UTF-8. Afin de gérer efficacement les caractères de 4 octets, ce guide propose des solutions pour filtrer ou remplacer les caractères Unicode qui peuvent prendre plus de 3 octets.

Solution utilisant une expression régulière :

Une approche consiste à utiliser une expression régulière pour détecter les caractères en dehors de la plage autorisée de u0000-uD7FF et uE000-uFFFF. À l'aide du module re, vous pouvez créer un modèle comme celui-ci :

pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
Copier après la connexion

Pour filtrer la chaîne, vous pouvez utiliser re.sub() :

import re

re_pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
filtered_string = re_pattern.sub(u'\uFFFD', unicode_string)
Copier après la connexion

Solution alternative en utilisant Python :

Une autre option consiste à parcourir chaque caractère Unicode de la chaîne et à remplacer n'importe quel caractère par un codage UTF-8 de 4 octets par le caractère de remplacement 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
    )
Copier après la connexion

Comparaison des performances :

Pour comparer les performances de ces solutions, des tests ont été réalisés à l'aide de cProfile. La solution basée sur les expressions régulières a considérablement surpassé la solution basée sur Python.

Conclusion :

La solution d'expression régulière suggérée offre un moyen efficace et fiable de filtrer ou de remplacer l'Unicode. caractères dépassant le codage UTF-8 de 3 octets en Python. Il est particulièrement bénéfique pour les situations où l'optimisation de la vitesse est critique.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal