python2 去除 字符串中emoji 符号,去除所有4字节utf8字符

时间:2022-06-26 10:34:54

对咱们天朝程序员来说,最常用的编码方式就是UTF-8了。大家在创建数据库的时候,总是条件反射选择UTF-8编码。
最近我遇到一个emoji 符号不能写入数据库得问题。通过查询资料得知,emoji 符号占据4个字符长度,而MySQL的utf-8编码只能写入最多3个字节的字符。想要写入emoji 符号,需要将数据库的编码方式改为 utf8mb4 。
然而,我这张表是一张比较老的表,其中存了很多的数据。修改他的结构怕会引起其他问题。所以只能想别的办法。
在我这里这个数据去除emoji 符号也能符合系统的要求,于是我开始想办法去除emoji 符号。开始我想取得找到emoji的编码范围,把这个范围内的字符都干掉。后来我发现emoji的分布范围比较分散,我没有找到能去除所有emoji符号的范例。
我又想到一个办法,把所有四字节utf8字符干掉不就行了嘛。以下是代码

    try:
text = unicode(text,"utf-8")
except TypeError as e:
pass
try:
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
return highpoints.sub(u'',text)