我正在尝试将数据存储到 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},
{“种类”:“软件”,“功能”:[“iosUniversal”],“支持的设备”:[“所有”],“
它似乎是utf8。我尝试在所有适当的地方设置utf8,但未能成功保存到mysql。
在 5.1 和 5.5 mysql 数据库上,通过使用连接器/J 的 jdbc 观察到以下行为。
这是我尝试过的事情:(a)只使用默认值。不起作用,ascii 字符很好,但 CJK 字符不行。
(b) 在任何地方设置 utf8:在连接中,在表中,在连接和客户端中。没有更改/不成功正确存储 utf8 字符(它们显示为?等)。回答 jim 的问题: 使用 mysql 提示符直接在 mysql 服务器上检查数据,字符编码为 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 末尾的双引号引起的:删除它后 - 如上面的当前版本所示,这个特定错误消失了。但多字节字符的整体问题在数据库中出现乱码仍然存在)
以下是损坏的输出的摘录,它应该有韩文字符:
"price":0.00, "version":"2.1.1", "description":"âë°°ë¬ ì¬ê³ í¹ì ì¥ë주문 ë°©ì§ë¥¼ ìí´ í´ëí°ì¸ì¦ì ì¤ìí©ëë¤
此外,我会提到数据被验证为正确,因为相同的数据被写入亚马逊 s3 并且它是正确的(韩文字符在那里是完整的)。