当我将以下字符编码为UTF-8时:
º
我明白了:
º
然后将º存储为字段值,我选择带有LOWER()函数的字段并获取
âº
我期待它尊重该值是一个多字节字符,因此不会对其执行LOWER。
预期:
º
我不能正确理解LOWER()函数假设是多字节安全的,如手册中所述? (http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_lower)
或者我在这里做错了什么?
我正在运行MySQL 5.1。
修改
表格上的编码设置为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;
答案 0 :(得分:0)
INSERT INTO test_table(test_field) VALUES('º');
将插入一个2个字符的字符串,其中包含正确的LOWER()“⺔
如果要插入“º”,请确保
SET NAMES 'utf-8';
和
INSERT INTO test_table(test_field) VALUES('º');