我正在尝试将数据存储到 mysql,此处显示了其中的摘录:
"description":"★배달 사고 혹은 장난주문 방지주 찾는 배달음식점 즐겨찾기\n지난 주문 내역 확인\n포인트 적립 및 결제\n소셜 네트워크 연동을 통한 평가 남기기\n철가방에서 제공하는 다양한 이벤트", "currency":"USD", "genres":["Food & Drink", "Lifestyle"], "genreIds":["6023", "6012"], "releaseDate":"2011-10-10T07:00:00Z", "sellerName":"sang yoon woo", "bundleId":"kr.co.helloworld.hellodelive/us/app/cheolgabang/id468583150?mt=8&uo=4", "trackContentRating":"4+", "averageUserRating":5.0, "userRatingCount":2},
{"kind":"software", "features":["iosUniversal"], "supportedDevices":["all"], "
好像是utf8。我尝试在所有适当的地方设置 utf8,但未能成功保存到 mysql。
使用连接器/J 通过 jdbc 在 5.1 和 5.5 mysql 数据库上观察到以下行为。
以下是我尝试过的: (a) 只使用默认值。不起作用,ascii 字符可以,但 CJK 字符不行。
(b) 在所有地方设置 utf8:在连接中,在表中,在连接中和客户端中。没有改变/没有成功正确存储 utf8 字符(它们显示为 ? 等)。回答jim的问题:数据直接在mysql服务器上使用mysql prompt查数据,字符编码为utf8。
DB.execute(conn, "SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'",false);
DB.execute(conn,"drop table if exists dummy1; ",false);
DB.execute(conn,"create table dummy1 (id int auto_increment primary key, contents blob) default charset='latin1';",false);
String insert = String.format("insert into dummy1 (contents) values ('%s');", escapedContents);
DB.DBResult result = DB.execute(conn, insert, true);
然后我尝试添加如下连接参数:
jdbc:mysql://localhost:3306/classint?useUnicode=true&characterEncoding=utf8
但是出现如下错误:
useUnicode=true&characterEncoding=utf8" as stephenb: Unsupported character encoding 'utf8"'.
(编辑说明:这个不支持编码的错误是由于 jdbc url 末尾的悬挂双引号引起的:删除它之后 - 如上面的当前版本所示,这个特定错误消失了。但是 multi 的整体问题-字节字符在数据库中仍然是乱码)
这是错误输出的摘录,它应该有韩语字符:
"price":0.00, "version":"2.1.1", "description":"âë°°ë¬ ì¬ê³ í¹ì ì¥ë주문 ë°©ì§ë¥¼ ìí´ í´ëí°ì¸ì¦ì ì¤ìí©ëë¤
此外,我要提到的是数据被验证为正确的,因为相同的数据被写入 amazon s3 并且它是正确的(韩文字符在那里是完整的)。
最佳答案
要将 utf8 存储到 mysql,您应该将表列定义为 utf8 字符集,并使用 UTF-8 字符编码创建连接。正如你在这里看到的:
//Load jdbc driver
Class.forName("com.mysql.jdbc.Driver");
//Open a connection to server
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8", USERNAME, PASSWORD);
//Create statement for query
Statement stmt = (Statement) conn.createStatement();
//create table column with character set utf 8
stmt.executeUpdate("CREATE TABLE table1 (id int,name varchar(20) character set utf8);");
//INSERT query
stmt.executeUpdate("INSERT INTO table1 (id,name) VALUES ('12','汉语')");
//SELECT query
ResultSet rs=stmt.executeQuery("SELECT * FROM table1");
System.out.println(rs.getString("name"));
关于java - 如何通过jdbc将utf8存储到mysql 5.X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262133/