tomcat/jdbc/mysql:可以插入ÿ;(U+;00FF)但不是Ā;(U&x2B;0100)

tomcat/jdbc/mysql:可以插入ÿ;(U+;00FF)但不是Ā;(U&x2B;0100),mysql,utf-8,Mysql,Utf 8,我的设置: mysql 5.1 显示变量: |字符集客户机utf8 |字符集连接| utf8 |字符集数据库| utf8 |字符集文件系统二进制 |字符集结果| utf8 |字符集服务器| utf8 |字符集系统| utf8 |字符集目录D:\Program\MySQL\MySQL Server 5.1\share 字符集\ |排序规则| utf8(通用)ci |排序规则\u数据库| utf8\u unicode\u ci |排序规则|服务器| utf8(通用)ci 甚至 |init_conne

我的设置:

mysql 5.1 显示变量:
|字符集客户机utf8
|字符集连接| utf8
|字符集数据库| utf8
|字符集文件系统二进制
|字符集结果| utf8
|字符集服务器| utf8
|字符集系统| utf8
|字符集目录D:\Program\MySQL\MySQL Server 5.1\share 字符集\
|排序规则| utf8(通用)ci
|排序规则\u数据库| utf8\u unicode\u ci
|排序规则|服务器| utf8(通用)ci
甚至
|init_connect | SET collation_connection=utf8_general_ci;设置名称utf8

表格具有字符集utf8

tomcat 6.0 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个字节:bang


为什么会这样?我怎样才能让它工作呢?

在我添加了另外两个表来检查它是否是MyISAM与InnoDB的问题后,它只是在新表上工作,为什么

在新表中,每列使用默认字符集,而在我现有的表中,每列的字符集都设置为latin1。这是因为我从非utf8 mysql实例复制了db,并手动将表字符集更改为utf-8。但在复制时,HeidiSQL向每列添加了一个“字符集latin1”,在更改字符集时没有更改,并且在HeidiSQL中很难看到一列有一个单独的字符集