tomcat / jdbc / mysql: можно вставить ÿ (U + 00FF), но не Ā (U + 0100) - PullRequest
1 голос
/ 08 апреля 2010

мои настройки:

mysql 5.1

Показать переменные:
| character_set_client | utf8
| character_set_connection | utf8
| набор персонажей | 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

кот 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!

почему это так? и как я могу заставить его работать?

1 Ответ

0 голосов
/ 08 апреля 2010

после того, как я добавил еще две таблицы, чтобы проверить, если это проблема MyISAM против InnoDB, она просто работает на новых таблицах и почему?

в новых таблицах каждый столбец использовал набор символов по умолчанию, в то время как в моих существующих таблицахcharsets каждого столбца были установлены на latin1.это было потому, что я скопировал базу данных из экземпляра mysql не-utf8 и вручную изменил набор символов таблицы на utf-8.НО при копировании HeidiSQL добавил «CHARACTER SET latin1» к каждому столбцу, который не был изменен при смене кодировки, И в HeidiSQL не очень легко увидеть, что столбец имеет индивидуальную кодировку ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...