MySQL은 이것이 유효한 UTF8 텍스트라고 믿지 않는다고 생각합니다. 동일한 열 정의 (mysql 클라이언트 연결도 UTF8)로 테스트 테이블에 삽입을 시도했지만 삽입했지만 MySQL CLI 클라이언트와 JDBC로 검색 한 데이터는 값을 올바르게 검색하지 못했습니다. UTF8이 올바르게 작동하는지 확인하기 위해 오바마에 "o"대신 "ö"를 삽입했습니다.
johan@maiden:~$ mysql -vvv test < insert.sql
--------------
insert into utf8_test values(_utf8 "walmart öbama 👽💔")
--------------
Query OK, 1 row affected, 1 warning (0.12 sec)
johan@maiden:~$ file insert.sql
insert.sql: UTF-8 Unicode text
테스트 할 작은 Java 애플리케이션 :
package test.sql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Test
{
public static void main(String[] args)
{
System.out.println("test string=" + "walmart öbama 👽💔");
String url = "jdbc:mysql://hostname/test?useUnicode=true&characterEncoding=UTF-8";
try
{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection c = DriverManager.getConnection(url, "username", "password");
PreparedStatement p = c.prepareStatement("select * from utf8_test");
p.execute();
ResultSet rs = p.getResultSet();
while (!rs.isLast())
{
rs.next();
String retrieved = rs.getString(1);
System.out.println("retrieved=\"" + retrieved + "\"");
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
산출:
johan@appel:~/workspaces/java/javatest/bin$ java test.sql.Test
test string=walmart öbama 👽💔
retrieved="walmart öbama "
또한 JDBC 연결로 동일한 삽입을 시도했으며 동일한 예외가 발생했습니다. 나는 이것이 MySQL 버그라고 생각합니다. 이미 그런 상황에 대한 버그 리포트가 있을지도 ..