Когда я кодирую следующий символ в UTF-8:
º
Я получаю:
º
Затем, сохраняя в качестве значения поля º, я выбираю поле с помощью функции LOWER () и получаю
âº
Я ожидал, что это будет уважать, что значение является многобайтовым символом и поэтому не будет НИЖЕ выполнять его.
Ожидаемое:
º
Я не правильно понимаю, что функция LOWER () должна быть многобайтовой, как указано в руководстве? (http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_lower)
Или я здесь что-то не так делаю?
Я использую MySQL 5.1.
EDIT
Кодировка в таблице установлена в UTF-8. Кодировка сеанса по умолчанию latin1.
Вот мои шаги воспроизведения.
CREATE TABLE test_table (
test_field VARCHAR(1000) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO test_table(test_field) VALUES('º');
SELECT LOWER(test_field) FROM test_table;