首页 > 软件开发 > MYSQL >

.net下如何让mysql支持emoji字符不出现乱码

来源:互联网 2023-03-16 23:01:44 238

.net环境下,读取mysql数据库中emoji字符会出现数据库异常,今天分享一下我是如何处理这个问题的。8rJ办公区 - 实用经验教程分享!

方法/步骤

  • 1

    首先是有一个移动端产品,开发的App在各类手持设备中使用,输入法支持各种表情符,最终用户的输入将存到mysql数据库8rJ办公区 - 实用经验教程分享!

  • 2

    有一个.net的数据管理后台,后台有一个管理界面,管理移动端上传的用户信息,ado.net连接mysql,并读取数据,页面显示时会抛出如下异常:8rJ办公区 - 实用经验教程分享!

    “给定关键字不在字典中"8rJ办公区 - 实用经验教程分享!

    MySql.Data.MySqlClient.CharSetMap.GetChararcterSet(DBVersion version, String CharSetName)8rJ办公区 - 实用经验教程分享!

    .net下如何让mysql支持emoji字符不出现乱码8rJ办公区 - 实用经验教程分享!

  • 3

    根据异常堆栈信息,我们可以判断这个异常来自MySql.Data.dll,底层驱动,源码如下:8rJ办公区 - 实用经验教程分享!

    .net下如何让mysql支持emoji字符不出现乱码8rJ办公区 - 实用经验教程分享!

  • 4

    经过排查,发现mysql数据库表中,某个字段是utf8mb4类型,支持emoji字符集,但.net字符库里面并没有这个字符集的支持。8rJ办公区 - 实用经验教程分享!

    .net下如何让mysql支持emoji字符不出现乱码8rJ办公区 - 实用经验教程分享!

  • 5

    尝试修改驱动代码,增加语句8rJ办公区 - 实用经验教程分享!

    mapping.Add("utf8mb4", new CharacterSet("utf-32", 4));8rJ办公区 - 实用经验教程分享!

    果然,这样不报错了8rJ办公区 - 实用经验教程分享!

    因为.net的字符集里面就不支持utf8mb4,所以尝试用utf-32来试试8rJ办公区 - 实用经验教程分享!

    它跟utf8mb4一样长度,都是4个字节;8rJ办公区 - 实用经验教程分享!

    .net下如何让mysql支持emoji字符不出现乱码8rJ办公区 - 实用经验教程分享!

  • 6

    数据读取不报错了,界面上也显示了完整的数据,但涉及到emojj字符的数据全部是乱码。。。8rJ办公区 - 实用经验教程分享!

    各种尝试未果。。。8rJ办公区 - 实用经验教程分享!

    感叹一下,.net处理emojj的资料怎么这么少哦8rJ办公区 - 实用经验教程分享!

    .net下如何让mysql支持emoji字符不出现乱码8rJ办公区 - 实用经验教程分享!

  • 7

    最后,尝试把连接串的字符集和网页的编码统一为utf88rJ办公区 - 实用经验教程分享!

    !--数据库连接编码-->8rJ办公区 - 实用经验教程分享!

    add name="MySqlConn" connectionString="Server=localhost;User Id=xxx;Password=xxx;Database=xxx;charset=utf8" />8rJ办公区 - 实用经验教程分享!

    8rJ办公区 - 实用经验教程分享!

    !--网页编码-->8rJ办公区 - 实用经验教程分享!

    globalization requestEncoding="utf-8" responseEncoding="utf-8" />8rJ办公区 - 实用经验教程分享!

    8rJ办公区 - 实用经验教程分享!

    不报错、切没有乱码了,只是不显示emoji字符,问题暂时解决。8rJ办公区 - 实用经验教程分享!

    .net下如何让mysql支持emoji字符不出现乱码8rJ办公区 - 实用经验教程分享!

  • 7本页面非法爬取自百度经验
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!8rJ办公区 - 实用经验教程分享!


    标签: 软件MYSQL表情

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码