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 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败
  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿