首页 > 软件开发 > MYSQL >

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

来源:互联网 2023-03-16 23:01:44 版权归原作者所有,如有侵权,请联系我们

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

方法/步骤

  • 1

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

  • 2

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

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

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

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

  • 3

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

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

  • 4

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

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

  • 5

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

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

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

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

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

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

  • 6

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

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

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

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

  • 7

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

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

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

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

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

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

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

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

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

  • 7
  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!X2c办公区 - 实用经验教程分享!


    标签: 软件MYSQL表情

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