mysql> CREATE database testing CHARACTER SET utf16;
Query OK, 1 row affected (0.00 sec)
mysql> USE testing;
Database changed
mysql> CREATE TABLE t (str varchar(64));
Query OK, 0 rows affected (0.43 sec)
mysql> INSET INTO t values ("1234567891234567");
Query OK, 1 row affected (0.00 sec)
=============================Java строка против тузды строк
Тогда у меня есть кусок Java код
Connection connection = DriverManager.getConnection(url, usr, pass);
Statement statement = connection.createStatement();
statement.execute("USE testing");
ResultSet rst = statement.executeQuery("SELECT str, LENGTH(str) FROM t;");
while (rst.next())
System.out.print("java length: " + rst.getString(1).length()
+ "\nmysql length: " + rst.getInt(2));
Это дало бы
java length: 16
mysql length: 32
Я не понимаю, почему неравной длины. Я явно установил набор символов базы данных в UTF16 (который является кодировкой по умолчанию Java, не так ли?) Почему у меня все еще возникают несогласованные значения длины?