求过滤非UTF8字符的方法

闲游四疯 2018-05-18 11:06:03
ASP.NET+MYSQL项目 插入数据的时候,内容有一些图案字符,提示错误:
Incorrect string value: '\xF0\x9F\x98\xB1\xF0\x9F...' for column 'content' at row 1
查了下说是 字符占四个字节,UTF8不支持引起的,我不想改数据库编码格式,想在源头把字符过滤掉,
我把文本转UTF8 没有效果,不会过滤,求一个C# 过滤非UTF-8字符的方法,
上网搜索都是JAVA跟PHP版的,没有C#版的
表情图案
...全文
765 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
今天是周五嘛 2019-10-18
  • 打赏
  • 举报
回复
引用 2 楼 闲游四疯 的回复:
嗯 基础不好 理解不了这基础的东西 反正是那些图案字符存储的问题,我拿PHP的方法改了下,我自己是能用了,贴出来,以后有需要的人参考下吧……
匹配替换掉所有UTF8字符,剩下的都是非UTF8字符,替换掉

/// <summary>
/// 替换非UTF8字符串
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
public static string GetUTF8(string html)
{
string str = Regex.Replace(html, @"[\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|"
+ "\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2}", "", RegexOptions.IgnoreCase).Trim();

if (str != String.Empty)
{
foreach (char item in str)
html = html.Replace(item.ToString(), "");
}

return html;
}
这个是不是只能去掉非汉字字符呀
编程有钱人了 2018-05-18
  • 打赏
  • 举报
回复
单纯的 “字符串”的 “\xF0\x9F\x98\xB1\xF0\x9F” (这了我说是字符串本身,不是格式),其实就是字母和数字的组合,这个东西不和UTF-8 没关系的,我觉得这个错误是列存储长度报错
闲游四疯 2018-05-18
  • 打赏
  • 举报
回复
嗯 基础不好 理解不了这基础的东西 反正是那些图案字符存储的问题,我拿PHP的方法改了下,我自己是能用了,贴出来,以后有需要的人参考下吧…… 匹配替换掉所有UTF8字符,剩下的都是非UTF8字符,替换掉

        /// <summary>
        /// 替换非UTF8字符串
        /// </summary>
        /// <param name="html"></param>
        /// <returns></returns>
        public static string GetUTF8(string html)
        {
            string str = Regex.Replace(html, @"[\x09\x0A\x0D\x20-\x7E]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|"
                + "\xED[\x80-\x9F][\x80-\xBF]|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2}", "", RegexOptions.IgnoreCase).Trim();

            if (str != String.Empty)
            {
                foreach (char item in str)
                    html = html.Replace(item.ToString(), "");
            }

            return html;
        }

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧