Bagaimana Menapis Aksara Unikod Melebihi Pengekodan UTF-8 3-Bait dalam MySQL 5.1?

Barbara Streisand
Lepaskan: 2024-10-26 10:10:03
asal
686 orang telah melayarinya

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

Menapis Aksara Unikod Melebihi Pengekodan UTF-8 3-Byte

Pelaksanaan MySQL dalam versi 5.1 mempunyai had, di mana ia hanya menyokong 3- bait UTF-8 aksara. Untuk mengendalikan aksara 4-bait dengan berkesan, panduan ini menyediakan penyelesaian untuk menapis atau menggantikan aksara unikod yang mungkin mengambil masa lebih daripada 3 bait.

Penyelesaian menggunakan Ungkapan Biasa:

Satu pendekatan ialah menggunakan ungkapan biasa untuk mengesan aksara di luar julat u0000-uD7FF dan uE000-uFFFF yang dibenarkan. Menggunakan modul semula, anda boleh mencipta corak seperti ini:

pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
Salin selepas log masuk

Untuk menapis rentetan, anda boleh menggunakan re.sub():

import re

re_pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
filtered_string = re_pattern.sub(u'\uFFFD', unicode_string)
Salin selepas log masuk

Penyelesaian Alternatif menggunakan Python:

Pilihan lain adalah untuk melelar melalui setiap aksara Unicode dalam rentetan dan menggantikan mana-mana aksara dengan pengekodan UTF-8 4-bait dengan aksara gantian 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
    )
Salin selepas log masuk

Perbandingan Prestasi:

Untuk membandingkan prestasi penyelesaian ini, ujian telah dijalankan menggunakan cProfile. Penyelesaian berasaskan ungkapan biasa mengatasi penyelesaian berasaskan Python dengan ketara.

Kesimpulan:

Penyelesaian ungkapan biasa yang dicadangkan menyediakan cara yang cekap dan boleh dipercayai untuk menapis atau menggantikan unikod aksara yang melebihi pengekodan UTF-8 3-bait dalam Python. Ia amat berfaedah untuk situasi di mana pengoptimuman kelajuan adalah kritikal.

Atas ialah kandungan terperinci Bagaimana Menapis Aksara Unikod Melebihi Pengekodan UTF-8 3-Bait dalam MySQL 5.1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!