我试图确定每晚加载MySQL表的java程序中的错误。
日志中的错误是 java.sql.SQLException:字符串值不正确: '\ xEF \ xBF \ xBD \ xEF \ xBF \ xBD ...'代表第1行的“经理”列。
最后确定数据中有一个新名称(从平面文件加载) - FRANÇOIS - 正是cedilla发出错误。程序仍然加载了所有内容,只是将该字段留空了。
当我运行SHOW FULL COLUMNS FOR tablename
时,它是latin1_swedish_ci
。我对整理,charsets知之甚少。
我应该如何更改排序规则才能接受此操作?
答案 0 :(得分:0)
(渴望发表评论)
需要查看更多详情。
不要使用latin1;使用utf8。
与?useUnicode=yes&characterEncoding=UTF-8
电话
getConnection()
联系
在表和/或列定义中使用CHARACTER SET utf8
。请提供SHOW CREATE TABLE
进行确认。
EFBFBD是"替代品"性格,暗示你有垃圾来。
加载平面文件 - 你能从文件中获得Ç
的十六进制吗?如果它是C7
,则它是latin1,你应该在加载时指定latin1。是LOAD DATA
吗?或其他什么?
如果是C387
那么它是utf8;好。
更多讨论,调试,最佳实践等:Trouble with utf8 characters; what I see is not what I stored
术语:"整理" (例如,latin1_swedish_ci)指的是排序顺序。你的问题是"字符集" (例如,latin1或utf8)。