“Incorrect string value” when trying to insert UTF-8 into MySQL via JDBC?

前端 未结 18 944
无人及你
无人及你 2020-11-22 07:51

This is how my connection is set:
Connection conn = DriverManager.getConnection(url + dbName + \"?useUnicode=true&characterEncoding=utf-8\", userName, password

18条回答
  •  灰色年华
    2020-11-22 08:18

    this is not the recommendation solution.. But worth to share. Since my project are upgrade the DBMS from old Mysql to newest (8). But I cant change the table structure, only the DBMS config (mysql). The solution for mysql server.

    test on Windows mysql 8.0.15 on mysql config search for

    sql-mode="....."

    uncomment it. Or in my case just type/add

    sql-mode="NO_ENGINE_SUBSTITUTION"

    why not recommended solution. because if you use latin1 (my case).. the data insert successly but not the content (mysql not respond with error!!) . for example you type info like this

    bla \x12

    it save

    bla [] (box)

    okay.. for my problem.. I can change the field to UTF8.. But there is small problem.. see above answer about other solution is failed because the word is not inserted because contain more than 2 bytes (cmiiw).. this solution make your insert data become box. The reasonable is to use blob.. and you can skip my answer.

    Another testing related to this were.. using utf8_encode on your code before save. I use on latin1 and it was success (I'm not using sql-mode)! same as above answer using base64_encode .

    My suggestion to analys your table requirement and tried to change from other format to UTF8

提交回复
热议问题