我正在尝试将数据库排序规则设置为介绍人级别。但是当我从表中提取数据时,我看到了不同的字符。
mysql> DROP TABLE IF EXISTS test.tblname;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> CREATE TABLE test.tblname (
-> colnm VARCHAR(50)
-> CHARACTER SET euckr
-> COLLATE euckr_bin
-> );
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> INSERT INTO test.tblname VALUES (_euckr'가');
Query OK, 1 row affected, 2 warnings (0.00 sec)
mysql> INSERT INTO test.tblname VALUES (_euckr'각');
Query OK, 1 row affected, 2 warnings (0.00 sec)
mysql> INSERT INTO test.tblname VALUES (_euckr'갂');
Query OK, 1 row affected, 2 warnings (0.00 sec)
mysql> INSERT INTO test.tblname VALUES (_euckr'갃');
Query OK, 1 row affected, 2 warnings (0.00 sec)
mysql>
mysql> SELECT * FROM test.tblname;
+-------+
| colnm |
+-------+
| 媛 |
| 媛 |
| 媛 |
| 媛 |
+-------+
4 rows in set (0.00 sec)
mysql>
当我尝试像“insert into test.tblname values('가');" 我看到数据返回正确。
2条答案
按热度按时间ct3nt3jp1#
介绍人告诉解析器“后面的字符串使用字符集charset\u name”。因此,您告诉解析器您的字符是euc kr,但实际上您可能是在utf8中键入它,因为这是您的客户机的字符集(您可以用以下方法验证:
show variables like 'character_set_client';
)你应该注意这一点:
查询正常,1行受影响,2个警告(0.00秒)
使用
show warnings;
插入后显示警告。你可能有一个说“不正确的字符串值”。fykwrbwg2#
是的,你可以用介绍人,但只有在合适的情况下。
也就是说,如果你以某种方式进入
B0A2
进入之内然后将正确插入。你有一个键盘可以产生这样的2字节euckr码吗?
对于几乎所有的应用程序,使用
utf8mb4
. 使用其他东西(例如euckr
)仅当源字节采用非utf-8编码时。