qq_43063954 2020-12-26 12:08 采纳率: 44.4%
浏览 116
已采纳

C# 操作Mysql 设置编码为 latin1 遇到的问题

 

如图所示 使用mysql.data 6.2.1.0查询到的数据 转码后就是正常的 而mysql.data高于这个版本查询到的数据转码后个别字符乱码

昨天折腾了一天都没解决 我知道UTF8好用 但是这是面向用户的东西 只能我兼容他们不能他们兼容我。。。。代码如下

 

private static async void Test()
        {

            string connStr = $"server=47.101.216.250;Database=master2;Uid=master2;Pwd=123456;Port=3306;Charset=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;";
            var conn = new MySqlConnection(connStr);
            conn.Open();
            MySqlCommand cmd = new MySqlCommand { Connection = conn };

            cmd.CommandText = "set names latin1; ";//设置编码 项目所需的编码
            cmd.ExecuteNonQuery();
            //很有意思的是设置编码为latin1后 mysql.data版本号为:6.2.1.0就可以正常使用 如果高于这个版本的mysql.data 取回的数据转码后个别字符是乱码的
            //当然使用 convert(unhex(hex(convert(charac_name using latin1))) using utf8)as charac_name  也是可以解决的 但是项目需要用实体框架这个方案行不通
            //实体框架要求mysql.data 版本号为:8.0.22所以低版本的mysql.data也不适用
            //昨天搞了一天都没解决掉 特此来论坛求救各位 我想使用8.0.22版本的mysql.data同时也能解决个别字符乱码的问题

            for (int i = 0; i < 10; i++)
            {
                cmd.CommandText = $"INSERT INTO char_data (charac_name) values('精易论坛{i}')";
                cmd.ExecuteNonQuery();
            }
            cmd.CommandText = "SELECT * FROM char_data WHERE charac_name='精易论坛1'";

            MySqlDataReader read = cmd.ExecuteReader();
            read.Read();
            var name = read[1].ToString();
            Console.WriteLine("返回结果:" + Conver(name));

            read.Close();
            conn.Close();


        }
        public static string Conver(string str)
        {
            if (str == null || str.Length == 0)
            {
                return string.Empty;
            }
            return Encoding.UTF8.GetString(Encoding.GetEncoding("iso-8859-1").GetBytes(str));
        }

  • 写回答

20条回答 默认 最新

  • bosaidongmomo 2020-12-26 13:59
    关注

    q386847535

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(19条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)