gpt4 book ai didi

MySQL:char_length(),俄语的错误值

转载 作者:行者123 更新时间:2023-11-29 05:40:33 25 4
gpt4 key购买 nike

我正在使用 char_length() 来测量“Русский”的大小:奇怪的是,它没有告诉我它是 7 个字符,而是告诉我有 14 个。有趣的是,如果查询只是...

SELECT CHAR_LENGTH('Русский')

...答案是正确的。但是,如果我改为查询数据库,则答案为 14:

SELECT CHAR_LENGTH(text) FROM locales WHERE lang = 'ru-RU' AND name = 'lang_name'

有人知道我可能做错了什么吗?我可以确认排序规则是 utf8_general_ci 并且表是 MyISAM

谢谢,阿德里安

编辑:我的最终目标是能够测量包含单字节和双字节字符(例如英语和俄语,但不仅限于这两种语言)的表中记录的长度

最佳答案

因为每个 UTF8 字符使用两个字节。参见 http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_char-length

mysql> set names utf8;
mysql> SELECT CHAR_LENGTH('Русский'); result - 7
mysql> SELECT CHAR_LENGTH('test'); result - 4

create table test123 (
text VARCHAR(255) NOT NULL DEFAULT '',
text_text TEXT) Engine=Innodb default charset=UTF8;

insert into test123 VALUES('русский','test русский');

SELECT CHAR_LENGTH(text),CHAR_LENGTH(text_text) from test123; result - 7 and 12

我测试过使用:set names koi8r;创建表等并得到无效结果。所以解决方案是重新创建表并在设置集名称 UTF8 后插入所有数据。

关于MySQL:char_length(),俄语的错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7096794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com