Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- JDBC MySQL UTF-8 string writing problem
- public DBSource(ConnectionInfo ci) throws
- ClassNotFoundException, InstantiationException,
- IllegalAccessException, SQLException
- {
- Class.forName("com.mysql.jdbc.Driver").newInstance();
- String dbPath = String.format(
- "jdbc:mysql://%s:%d/%s?user=%s&password=%s&characterEncoding=utf-8&" +
- "useUnicode=true", ci.host, ci.port, ci.dbName, ci.user, ci.password);
- conn = java.sql.DriverManager.getConnection(dbPath);
- prepareTables();
- }
- private void prepareTables() throws SQLException
- {
- java.sql.Statement stat = conn.createStatement();
- String query = "set names utf8";
- stat.execute(query);
- query = "set character set utf8";
- stat.execute(query);
- query = "show variables like '%char%'";
- stat.execute(query);
- java.sql.ResultSet rs = stat.getResultSet();
- while (rs.next())
- {
- String k = rs.getString(1);
- String v = rs.getString(2);
- System.out.println(k + " - " + v);
- }
- query = "drop table if exists clt";
- stat.execute(query);
- query = "create table clt"
- + "("
- + " id bigint not null"
- + ", text varchar(50) not null"
- + ") default character set utf8";
- stat.execute(query);
- }
- public void visit(Insert i) throws SQLException
- {
- String query = "insert into clt"
- + " (id, text) values (?, ?)";
- java.sql.PreparedStatement stmt = conn.prepareStatement(query);
- if (i.rowData.id == 12656697)
- {
- String toOut = "<<< " + Long.toString(i.rowData.id) + " - " + i.rowData.text;
- System.out.println(toOut);
- }
- int it = 0;
- stmt.setLong(++it, i.rowData.id);
- stmt.setString(++it, i.rowData.text);
- stmt.execute();
- stmt.close();
- }
- public void checkText() throws SQLException
- {
- java.sql.Statement stmt = conn.createStatement();
- String query = "select id, text from clt where id = '12656697'";
- stmt.execute(query);
- java.sql.ResultSet rs = stmt.getResultSet();
- while (rs.next())
- {
- String k = rs.getString(1);
- String v = rs.getString(2);
- String toOut = ">>> " + k + " - " + v;
- System.out.println(toOut);
- }
- }
- character_set_client - utf8
- character_set_connection - latin1
- character_set_database - latin1
- character_set_filesystem - binary
- character_set_results - utf8
- character_set_server - utf8
- character_set_system - utf8
- character_sets_dir - /usr/share/mysql/charsets/
- <<< 12656697 - Апарати
- >>> 12656697 - ???????
- [client]
- default-character-set=utf8
- [mysql]
- default-character-set=utf8
- [mysqld]
- default-character-set=utf8
- character-set-server=utf8
Add Comment
Please, Sign In to add comment