mysql去除emoji表情符号的两种方法

昨天晚上在测试一个帝国CMS的文章功能的时候发现了一个比较有意思的事情,就是我复制的内容里面有表情符号,发布到帝国CMS的时候内容为空,自己随便输入的文字又能发布成功,属实有点楞,后来慢慢排除发现是字符串的问题。

原因,MySQL 中使用 utf8是utf8mb3仅支持三个字节存储,utf8mb4才是才是存储4个字节。MySQL数据库表设计的时候,需要注意,Mysql的UTF-8只支持三个字节的存储,而一般字符是三个字节,但是emoji表情是4个字节,所以存储不了。为了解决这个问题,Mysql在5.5.3版本之后转而支持了存储4个字节的utf8字符,字符集为utf8mb4。

以下是几种执行此操作的方法:

1. 使用 REGEXP_REPLACE() 函数

REGEXP_REPLACE() 函数允许您使用正则表达式替换匹配的子字符串。要移除特殊字符,可以使用以下模式:

1

REGEXP_REPLACE(string, '[^a-zA-Z0-9 ]', '')

此模式将匹配所有非字母数字字符和空格,并将其替换为空字符串。

2. 使用 TRANSLATE() 函数

TRANSLATE() 函数允许您将一组字符翻译为另一组字符。要移除特殊字符,可以使用以下模式:

1

TRANSLATE(string, '[^a-zA-Z0-9 ]', '')

此模式将匹配所有非字母数字字符和空格,并将其翻译为空字符串。

3. 使用 TRIM() 函数

TRIM() 函数可用于从字符串中移除指定字符。要移除特殊字符,可以使用以下模式:

1

TRIM(BOTH '[^a-zA-Z0-9 ]' FROM string)

此模式将从字符串两端移除所有非字母数字字符和空格。

4. 使用字符串方法

MySQL 还提供了一组字符串方法,可用于执行各种操作。要移除特殊字符,可以使用以下方法:

1

string.replace(/[^a-zA-Z0-9 ]/g, '')

此方法使用正则表达式来匹配所有非字母数字字符和空格,并将其替换为空字符串。

示例

以下查询演示了如何使用 REGEXP_REPLACE() 函数从字符串中移除特殊字符:

1

SELECT REGEXP_REPLACE('This is a sample string!', '[^a-zA-Z0-9 ]', '') AS cleaned_string;

结果:

1

Thisisasamplestring

当然最简单的是只要你的mysql版本在5.5.3以上就可以通过直接把表改为utf8mb4就可以了。mysql去除emoji表情符号的两种方法

mysql去除emoji表情符号的两种方法

代码笔记

帝国CMS8.0测试版优缺点

2025-1-18 21:29:01

代码笔记

2024年最受欢迎的AI工具排行榜

2025-1-23 11:55:39

搜索