matlab-JDBC操作MYSQL数据库中文乱码解决

JDBC连接MYSQL数据库,使用MATLAB读写中文数据出现乱码,是由于MYSQL本身的配置问题

试验数据库的编码为UTF8,操作系统为中文WINDOWS,即操作系统的编码是GBK,如果不对MYSQL的字符编码进行配置,将产生乱码。

配置方法为:

修改MySQL文件夹下的my.ini文件。如下:

 

[mysql]

default-character-set=utf8

[mysqld]
default-character-set=utf8

或者将下面的这段

## UTF 8 Settings
#init-connect=\'SET NAMES utf8\'
#collation_server=utf8_unicode_ci
#character_set_server=utf8
#skip-character-set-client-handshake
#character_sets-dir="E:/xampp/mysql/share/charsets"#character_set_server=utf8的注释符“#”去掉

## UTF 8 Settings
#init-connect=\'SET NAMES utf8\'
#collation_server=utf8_unicode_ci
character_set_server=utf8
#skip-character-set-client-handshake
#character_sets-dir="E:/xampp/mysql/share/charsets"

重新启动MYSQL,中文乱码消失,下面是验证过程:

 

1、连接数据库

>> myconn=database('mystudent','root','','com.mysql.jdbc.Driver','jdbc:mysql://localhost:3306/mystudent')
 
myconn =
 
       Instance: 'mystudent'
       UserName: 'root'
         Driver: 'com.mysql.jdbc.Driver'
            URL: 'jdbc:mysql://localhost:3306/mystudent'
    Constructor: [1x1 com.mathworks.toolbox.database.databaseConnect]
        Message: []
         Handle: [1x1 com.mysql.jdbc.JDBC4Connection]
        TimeOut: 0
     AutoCommit: 'on'
           Type: 'Database Object'

2、建立游标

>> mycurs=exec(myconn,'select * from myst')
 
mycurs =
 
        Attributes: []
              Data: 0
    DatabaseObject: [1x1 database]
          RowLimit: 0
          SQLQuery: 'select * from myst'
           Message: []
              Type: 'Database Cursor Object'
         ResultSet: [1x1 com.mysql.jdbc.JDBC4ResultSet]
            Cursor: [1x1 com.mathworks.toolbox.database.sqlExec]
         Statement: [1x1 com.mysql.jdbc.StatementImpl]
             Fetch: 0

>> a=fetch(mycurs)
 
a =
 
        Attributes: []
              Data: {2x2 cell}
    DatabaseObject: [1x1 database]
          RowLimit: 0
          SQLQuery: 'select * from myst'
           Message: []
              Type: 'Database Cursor Object'
         ResultSet: [1x1 com.mysql.jdbc.JDBC4ResultSet]
            Cursor: [1x1 com.mathworks.toolbox.database.sqlExec]
         Statement: [1x1 com.mysql.jdbc.StatementImpl]
             Fetch: [1x1 com.mathworks.toolbox.database.fetchTheData]

3、读取数据,可以看到中文正常

>> a.Data

ans =

    '上大'    [1]
    '追求'    [0]

4、写数据,查看中文是否正常

>> colnames={'name','确定否'}

colnames =

    'name'    '确定否'

 
>> insert(myconn,'myst',colnames,{'张三',logical(1)})
>>

 

重新读取数据

>> mycurs=exec(myconn,'select * from myst')
 
mycurs =
 
        Attributes: []
              Data: 0
    DatabaseObject: [1x1 database]
          RowLimit: 0
          SQLQuery: 'select * from myst'
           Message: []
              Type: 'Database Cursor Object'
         ResultSet: [1x1 com.mysql.jdbc.JDBC4ResultSet]
            Cursor: [1x1 com.mathworks.toolbox.database.sqlExec]
         Statement: [1x1 com.mysql.jdbc.StatementImpl]
             Fetch: 0

>> a=fetch(mycurs)
 
a =
 
        Attributes: []
              Data: {3x2 cell}
    DatabaseObject: [1x1 database]
          RowLimit: 0
          SQLQuery: 'select * from myst'
           Message: []
              Type: 'Database Cursor Object'
         ResultSet: [1x1 com.mysql.jdbc.JDBC4ResultSet]
            Cursor: [1x1 com.mathworks.toolbox.database.sqlExec]
         Statement: [1x1 com.mysql.jdbc.StatementImpl]
             Fetch: [1x1 com.mathworks.toolbox.database.fetchTheData]

>>

>> a.Data

ans =

    '上大'    [1]
    '追求'    [0]
    '张三'    [1]

>>
发布了473 篇原创文章 · 获赞 14 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/AI_LX/article/details/105165253