一个关于如何从 MQL4访问 MYSQL 数据库乱码问题。

 

   一个关于如何从 MQL4访问 MYSQL 数据库乱码问题。

                       在此向进来的各位表示感谢,我现在最近也不断地学习,在本网站中也找了很多关于学习MQL学习的资料,但最近测试了一个关于如何从 MQL4访问 MYSQL 数据库的功能,同时也参考并按照<如何从 MQL5 (MQL4) 访问 MYSQL 数据库>文章编写,但我一直测试数据都有存在的问题,在此向各请教一下,目前测试了MYSQL 的数据,可以访问数据库,并同时取回数据,但只要是数字和英文的数据就正常显示,如果是有中文的就是乱码,难不成只有我的不行吗,在测试的时候各位没发现这问题?为这问题,现在向大家请教。。。。我如何解决这个问题.


以下是我和<如何从 MQL5 (MQL4) 访问 MYSQL 数据库>文章 取数据一样,代码也一样:、

if (Cursor >= 0)

    {

     Rows = MySqlCursorRows(Cursor);

     Print (Rows, " row(s) selected.");

     for (i=0; i<Rows; i++)

         if (MySqlCursorFetchRow(Cursor))

            {

             AccountBasID = MySqlGetFieldAsInt(Cursor, 0); // id

             TerminalNames = MySqlGetFieldAsString(Cursor, 1); // code

              AccountPNs = MySqlGetFieldAsString(Cursor, 2); // code 

              AccountEquitys = MySqlGetFieldAsDouble (Cursor,3); // code             

             YNRelease = MySqlGetFieldAsInt(Cursor, 4); // code     

              Dates = MySqlGetFieldAsDatetime(Cursor, 5); // code                

               // vStartTime = MySqlGetFieldAsDatetime(Cursor, 2); // start_time                   

            // vStartTime = MySqlGetFieldAsDatetime(Cursor, 2); // start_time

            

            //   Print ("ROW[",i,"]: id = ", vId, ", code = ", AccountNames, ", start_time = ", TimeToStr(vStartTime, TIME_DATE|TIME_SECONDS));

          

          if(YNRelease==1)

          {

             yn="真实用户";

          }

          else

          {

            yn="虚拟号";

          }

          

           Print ("ROW[",i,"]: 用户ID = ", AccountBasID, ", 账户 = ", TerminalNames, ", 账户pn= ", AccountPNs, ", 资产= ", AccountEquitys, ", 是否为真实用户= ", yn, ",  日期= ",TimeToStr(Dates, TIME_DATE|TIME_SECONDS));

          

          

            }

     MySqlCursorClose(Cursor); // NEVER FORGET TO CLOSE CURSOR !!!

    }

 else

    {

     Print ("Cursor opening failed. Error: ", MySqlErrorDescription);

    }

    

 MySqlDisconnect(DB);

    

中文一直都是显示 ?????????? ? ? ?  

何从 MQL5 (MQL4) 访问 MYSQL 数据库

 
玛格尔:

   一个关于如何从 MQL4访问 MYSQL 数据库乱码问题。

                       在此向进来的各位表示感谢,我现在最近也不断地学习,在本网站中也找了很多关于学习MQL学习的资料,但最近测试了一个关于如何从 MQL4访问 MYSQL 数据库的功能,同时也参考并按照<如何从 MQL5 (MQL4) 访问 MYSQL 数据库>文章编写,但我一直测试数据都有存在的问题,在此向各请教一下,目前测试了MYSQL 的数据,可以访问数据库,并同时取回数据,但只要是数字和英文的数据就正常显示,如果是有中文的就是乱码,难不成只有我的不行吗,在测试的时候各位没发现这问题?为这问题,现在向大家请教。。。。我如何解决这个问题.


以下是我和<如何从 MQL5 (MQL4) 访问 MYSQL 数据库>文章 取数据一样,代码也一样:、

if (Cursor >= 0)

    {

     Rows = MySqlCursorRows(Cursor);

     Print (Rows, " row(s) selected.");

     for (i=0; i<Rows; i++)

         if (MySqlCursorFetchRow(Cursor))

            {

             AccountBasID = MySqlGetFieldAsInt(Cursor, 0); // id

             TerminalNames = MySqlGetFieldAsString(Cursor, 1); // code

              AccountPNs = MySqlGetFieldAsString(Cursor, 2); // code 

              AccountEquitys = MySqlGetFieldAsDouble (Cursor,3); // code             

             YNRelease = MySqlGetFieldAsInt(Cursor, 4); // code     

              Dates = MySqlGetFieldAsDatetime(Cursor, 5); // code                

               // vStartTime = MySqlGetFieldAsDatetime(Cursor, 2); // start_time                   

            // vStartTime = MySqlGetFieldAsDatetime(Cursor, 2); // start_time

            

            //   Print ("ROW[",i,"]: id = ", vId, ", code = ", AccountNames, ", start_time = ", TimeToStr(vStartTime, TIME_DATE|TIME_SECONDS));

          

          if(YNRelease==1)

          {

             yn="真实用户";

          }

          else

          {

            yn="虚拟号";

          }

          

           Print ("ROW[",i,"]: 用户ID = ", AccountBasID, ", 账户 = ", TerminalNames, ", 账户pn= ", AccountPNs, ", 资产= ", AccountEquitys, ", 是否为真实用户= ", yn, ",  日期= ",TimeToStr(Dates, TIME_DATE|TIME_SECONDS));

          

          

            }

     MySqlCursorClose(Cursor); // NEVER FORGET TO CLOSE CURSOR !!!

    }

 else

    {

     Print ("Cursor opening failed. Error: ", MySqlErrorDescription);

    }

    

 MySqlDisconnect(DB);

    

中文一直都是显示 ?????????? ? ? ?  

何从 MQL5 (MQL4) 访问 MYSQL 数据库

设置数据库格式为UTF-8
 
Hong Jian Li:
设置数据库格式为UTF-8

数据库格式一直为为UTF-8

 
mt4 的mysql 支持的动态链接库不支持中文的,写入中文入库时就变成了乱码,目前市面上还没有见到支持中文的,暂时没法解决的,不用试了,只有入英文的!
 
hualiuc:
mt4 的mysql 支持的动态链接库不支持中文的,写入中文入库时就变成了乱码,目前市面上还没有见到支持中文的,暂时没法解决的,不用试了,只有入英文的!
就没有其它的动态链接库可以显示中文的?
 

你好,解决了中文的问题了吗,我找到了一个动态链接库支持中文,但是会突发报错


 

我遇到同样问题  解决办法:   

uchar  UTF8[];

StringToCharArray("set names gbk", UTF8);

mysql_real_query(mysql,UTF8,ArraySize(UTF8));

原因: