リクエストジェネレータでユニットテストを行っていて、LENGTH
関数で問題が発生します。MySQL:utf8の文字列での奇妙なLENGTH()動作
私はお互いに次の2つの要求があります。
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/"
}
}
を私の2番目のリクエストは、次のとおりです。
SELECT LENGTH('重庆') as len
それは6の代わりに、2を返します。 。
ここに何が問題なの?私のcharsetパラメータはよく見えます。
をより具体的には、 'LENGTH()は ')(CHAR_LENGTH'一方*バイト*における引数の長さを返し '*文字でその引数の長さを返します。 – eggyal