C# .net 去除/过滤Emoji表情分享

本文分享了在C# .NET中如何有效去除和过滤Emoji表情的方法,包括尝试不同的编码方式,如从Unicode转换为UTF32,并通过检查字节流中的特定值来过滤表情。在实验过程中,作者发现大部分Emoji由两个特定字节表示,通过判断这两个字节可以成功过滤掉大部分表情,同时避免误删正常字符。

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能够识别的
1233

大家可以去试试,链接: 符号大全 最下面更多进入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;
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值