C# .net 去除/过滤Emoji表情分享
Emoji去除 字符串存Mysql
因为项目需要,所以需要去除Emoji表情,但是网上文章很多,使用的都不够顺畅
正则等等好多方式,比较多的是JAVA的,根据编码过滤
在自己的项目里面测试这个有点麻烦,不断的重启等
给新手推荐一个网址,可以在线测试一些简单的代码,无需再调试了
链接: 菜鸟教程
下面的截图都来自菜鸟教程截图
一开始我是使用的<Emoji表情 过滤 c#>
参考:https://blog.youkuaiyun.com/liumapple/article/details/43900455
private string test(string str)
{
string result = Regex.Replace(str, @"\p{Cs}", "");
return result;
}
这个方法能够过滤很多emoji表情,但是有些表情没有过滤掉,存入Mysql后就变成了��
后来参考:https://blog.youkuaiyun.com/oDanYiNiao/article/details/51264551?utm_source=blogxgwz4
foreach (var a in str)
{
byte[] bts = Encoding.Unicode.GetBytes(a.ToString());
if (bts.Length == 4 || bts.Length == 5)
{
str = str.Replace(a.ToString(), "");
}
}
return str;
发现还是没有达到我想要的效果!
再后来看到Encoding.UTF32的方法,灵机一动,把上面Encoding.Unicode 改成Encoding.UTF32
图中发现1的符号对应的是253,emoji表情分成了2个��,我就想会不会所有的emoji表情都是2个��组成
试验发现大部分都是这样的,剩下的那部分也都是MYsql能够识别的

大家可以去试试,链接: 符号大全 最下面更多进入Emoji表情
一个Emoji表情都是2个�组成,而且�也不是我需要的符号,我就可以都过滤掉。
但是直接用if(a.ToString()==“�”) 却无法过滤!
我就想通过bts[0]=253 或者bts[1]=255去尝试
实验发现bts[0]=253大部分Emoji表情都能过滤掉了,剩下的都是Mysql能够识别的!但是特殊字符这"ヽ",“ㇽ”
2个字符也会被去掉了
如果用bts[1]=255,去掉的能够识别的字符更多了
所以,我们使用bts[0]=253&&bts[1]=255
这样基本上Emoji表情都能去除了
最终代码
foreach (var a in str)
{
byte[] bts = Encoding.UTF32.GetBytes(a.ToString());
if (bts[0].ToString() == "253"&& bts[1].ToString() == "255")
{
str = str.Replace(a.ToString(), "");
}
}
return str;
本文分享了在C# .NET中如何有效去除和过滤Emoji表情的方法,包括尝试不同的编码方式,如从Unicode转换为UTF32,并通过检查字节流中的特定值来过滤表情。在实验过程中,作者发现大部分Emoji由两个特定字节表示,通过判断这两个字节可以成功过滤掉大部分表情,同时避免误删正常字符。
1744

被折叠的 条评论
为什么被折叠?



