然而打包好 jar 运行就有问题。(swing 项目)
环境:JDK1.8,MYSQL5.7,WIN10,Netbean8.2
问题代码:
报错截图:
报错:java.sql.BatchUpdateException: Invalid utf8 character string: '\xB4\xF3\xBB\xB0\xB5\xA5\xC8\xAB\xCA\xA1201807'
乱码文字应该为:大话单 201807 (tableName)
经过以下尝试,都无效,不知道怎么办了。所以求助,解决了也方便后人查阅(我自己也会整理)
1
wxyz 2018-08-06 09:59:13 +08:00
java -fileencoding=utf-8 试下
|
2
execute 2018-08-06 09:59:52 +08:00
你第一点提到了“ jdbc characterEncoding 换过 utf8mb4 ”这步操作,但是你在 sql 里面却又指定了 character set utf8,不矛盾吗?
|
3
wxyz 2018-08-06 10:00:07 +08:00 1
上面不专业,其实是-Dfile.encoding=UTF-8
|
4
alvinbone88 2018-08-06 10:10:17 +08:00
数据库的编码确定是 utf8mb4_unicode_ci / utf8mb4_unicode_520_ci?MySQL 里 utf8mb4 有好几十种编码
|
5
linuxsteam OP @execute 之前我没有指定 character set 的 也就是默认创建的就是数据库的编码格式 即 utf8mb4
|
6
mmdsun 2018-08-06 12:36:27 +08:00 via Android
win10 可以改 cmd 的编码。你把 cmd 编码换成 utf-8
|
7
linuxsteam OP @alvinbone88 utf8mb4_general_ci navicat 默认修改字符集 排序规则都是 general 的
|
8
linuxsteam OP @wxyz 这个是在 cmd 里面添加吗 我试了还那样,无论您一楼的还是 3 楼的
|
9
linuxsteam OP @wxyz 卧槽,三楼参数放前面就可以了 java -jar -Dfile.encoding=UTF-8 xxx.jar 那这个可以在双击运行的时候内置进去吗? 要不然 exe 没法加这样的参数啊
|
10
linuxsteam OP @wxyz 刚刚又了解了一下该参数 就是指定 jvm 编码,windows 默认编码不是 gbk 吗,那我把项目改成 gbk 应该是可以解决问题的丫。。。。但是然并卵了。。。
|
11
wxyz 2018-08-07 08:32:20 +08:00
要把文件的转码成 gbk,才是真正的 gbk,这个是-D 是配置系统变量的,可以在程序里设置,有些地方你用了默认编码,就用的这个值。
|