我的设置:
显示变量:
| character_set_client | UTF8
| character_set_connection | UTF8
| character_set_database | UTF8
| character_set_filesystem |二进制
| character_set_results | UTF8
| character_set_server | UTF8
| character_set_system | UTF8
| character_sets_dir | D:\ Program \ MySQL \ MySQL Server 5.1 \ share
字符集\
| collation_connection | utf8_general_ci
| collation_database | utf8_unicode_ci
| collation_server | utf8_general_ci
甚至是
| init_connect | SET collation_connection = utf8_general_ci; SET NAMES utf8;
表表具有字符集utf8
jdbc连接器使用 characterEncoding =“utf8”useUnicode =“true”
现在当我尝试
时stmt.execute("UPDATE *table* SET *value*=\"ÿ\" WHERE ...)
它适用于
stmt.execute("UPDATE *table* SET *value*=\"Ā\" WHERE ...)
我得到了
java.sql.SQLException:字符串值不正确:列的'\ xC4 \ x80' 第1行的“价值”
此外它适用于ÿ以下的所有字符,可以用1个字节编码,但只要需要2个字节:砰!
为什么会这样?我怎样才能让它发挥作用?
答案 0 :(得分:0)
在我添加另外两个表来检查它是否是MyISAM与InnoDB问题之后,它只是在新表上工作,为什么?
在新表中,每列使用默认字符集,而在现有表中,每列的字符集都设置为latin1。这是因为我从非utf8 mysql实例复制了db并手动将表charset更改为utf-8。但是在复制时,HeidiSQL在每个列中添加了一个“CHARACTER SET latin1”,在更改字符集时没有更改,而且在HeidiSQL中很难看到列有一个单独的字符集...