tomcat / jdbc / mysql:可以插入ÿ(U + 00FF)而不是Â(U + 0100)

时间:2010-04-08 14:17:23

标签: mysql utf-8

我的设置:

mysql 5.1

显示变量:
| 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 字符集\
| collat​​ion_connection | utf8_general_ci
| collat​​ion_database | utf8_unicode_ci
| collat​​ion_server | utf8_general_ci
甚至是 | init_connect | SET collat​​ion_connection = utf8_general_ci; SET NAMES 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个字节:砰!

为什么会这样?我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

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

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