JDBC connection MYSQL database, using MATLAB to read and write Chinese garbled data is due to configuration problems MYSQL itself
Encoding test database is UTF8, the operating system for the Chinese WINDOWS, namely the operating system code is GBK, if not MYSQL character encoding configuration, will be garbled.
Configuration methods:
Modify MySQL my.ini file folder. as follows:
[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]
>>