MySQL:utf8字符串上的奇怪LENGTH()行为 [英] MySQL : strange LENGTH() behaviour on utf8 string
本文介绍了MySQL:utf8字符串上的奇怪LENGTH()行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在对请求生成器进行单元测试,并且遇到了 LENGTH
函数的麻烦.
I am doing unit tests on requests generators, and I get in trouble with LENGTH
function.
我有两个紧随其后的请求:
I have 2 requests that follows each other :
SHOW VARIABLES LIKE '%character%'
返回以下结果:
array(8) {
[0] =>
array(2) {
'Variable_name' =>
string(20) "character_set_client"
'Value' =>
string(4) "utf8"
}
[1] =>
array(2) {
'Variable_name' =>
string(24) "character_set_connection"
'Value' =>
string(4) "utf8"
}
[2] =>
array(2) {
'Variable_name' =>
string(22) "character_set_database"
'Value' =>
string(6) "latin1"
}
[3] =>
array(2) {
'Variable_name' =>
string(24) "character_set_filesystem"
'Value' =>
string(6) "binary"
}
[4] =>
array(2) {
'Variable_name' =>
string(21) "character_set_results"
'Value' =>
string(4) "utf8"
}
[5] =>
array(2) {
'Variable_name' =>
string(20) "character_set_server"
'Value' =>
string(4) "utf8"
}
[6] =>
array(2) {
'Variable_name' =>
string(20) "character_set_system"
'Value' =>
string(4) "utf8"
}
[7] =>
array(2) {
'Variable_name' =>
string(18) "character_sets_dir"
'Value' =>
string(26) "/usr/share/mysql/charsets/"
}
}
我的第二个请求是:
SELECT LENGTH('重庆') as len
它返回6而不是2.
这是怎么了?我的字符集参数看起来不错.
What's wrong here ? My charset parameters looks good.
推荐答案
mysql> SELECT LENGTH('重庆') ;
+------------------+
| LENGTH('重庆') |
+------------------+
| 6 |
+------------------+
1 row in set (0.00 sec)
CHAR_LENGTH
函数计数个字符:
mysql> SELECT CHAR_LENGTH('重庆') ;
+-----------------------+
| CHAR_LENGTH('重庆') |
+-----------------------+
| 2 |
+-----------------------+
1 row in set (0.00 sec)
这篇关于MySQL:utf8字符串上的奇怪LENGTH()行为的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文