更新:總算是解決啦!. 是數(shù)據(jù)庫管理工具的問題. 氣死我啦. 浪費了我一個上午.這件事告訴我們, 學會逐層解決問題是有多重要.我想直接將set names utf8語句和插入語句一起執(zhí)行, 加個分號就可以啦.這樣在我的SQL-front上也能正常工作.但是到了代碼了就不行.后一種, 大概是因為執(zhí)行了兩次, 是不同的SQL語句, 所以無法解決亂碼很正常.求問有什么好的解決方式?String sql = "set names utf8";sql += "insert into student(name, age) values('為龍', 23)";ps.execute(); // 報語法錯誤.String sql = "set names utf8";ps.execute();sql += "insert into student(name, age) values('為龍', 23)";ps.execute(); // 無法解決亂碼問題.java 文件全部用utf-8.鏈接地址:jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8"建表SQL:CREATE TABLE `student` ( `student_id` varchar(20) COLLATE utf8_bin ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
1 回答

jeck貓
TA貢獻1909條經(jīng)驗 獲得超7個贊
出現(xiàn)問題的原因是默認連接的是gbk編碼
解決方案如下:
找到mysql配置文件my.cnf,然后配置如下:
客戶端配置[client] 在下面添加
default-character-set=utf8 //默認字符集為utf8
在找到[mysqld] 添加
default-character-set=utf8 //默認字符集為utf8
init_connect='SET NAMES utf8' //(設定連接mysql數(shù)據(jù)庫時使用utf8編碼,以讓mysql數(shù)據(jù)庫為utf8運行)
然后重啟一下mysql,再運行下剛才的命令,都是utf-8后,在java程序中可以直接使用insert into 就不用前面那個set names了
添加回答
舉報
0/150
提交
取消