开始之前,抱歉我的英语。
我遇到了MySQL的问题。我创建数据库,并将编码字符串更改为latin2。来自Java的查询:
`INSERT INTO infos VALUES ( NULL, '100001486491198', 'ęłóżźćść!@#', '2013-12-23 11:24:37', 0, 0, 0 );`
在数据库中,所有看起来都像“???????”。我在phpMyAdmin中将此字符串更改为targen,当我执行SELECT查询时,我会在响应中获取相应的字符串。
此外,我将此代码添加到数据库连接:
Properties properties = new Properties();
properties.put( "user", DBUSER );
properties.put( "password", DBPASS );
properties.put( "characterEncoding", "ISO-8859-2" );
properties.put( "useUnicode", "true" );
try {
Class.forName( DBDRIVER ).newInstance();
connection = DriverManager.getConnection( DBURL, properties );
statement = connection.createStatement();
}
catch (InstantiationException | IllegalAccessException | ClassNotFoundException | SQLException e ) {
e.printStackTrace();
}
但作为回应我收到错误:
java.sql.SQLException: Incorrect string value: '\xB3\xF3\xBF\xBC\xE6\xBF...' for column 'content' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2812)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1811)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1725)
at com.mpkinfo.server.database.Database.add(Database.java:48)
...
我做错了什么?
答案 0 :(得分:0)
如果使用unicode字符,请将所有表格和文件编码设置为utf-8。
答案 1 :(得分:0)
我建议您使用UTF8,但如果您坚持使用ISO-8859-2,则必须将DBURL
更改为:
jdbc:mysql://localhost:3306/yourDatabase?useUnicode=falsee&characterEncoding=ISO-8859-2