Mysql 与鲁赛因的比赛

Mysql 与鲁赛因的比赛,mysql,character-encoding,match,Mysql,Character Encoding,Match,在很长一段时间内一直试图解决这个问题 SELECT MATCH(name) AGAINST('абраксас') (俄语)不起作用,但是 SELECT MATCH(name) AGAINST('abraxas') (英语)完美地工作。 我知道这是字符集的问题,但我尝试了各种设置,但都不起作用。 现在是拉丁语-1。 喜欢工作 这是与显示变量相关的字符集: character_set_client - latin1 character_set_connection - latin1 chara

在很长一段时间内一直试图解决这个问题

SELECT MATCH(name) AGAINST('абраксас')
(俄语)不起作用,但是

SELECT MATCH(name) AGAINST('abraxas')
(英语)完美地工作。
我知道这是字符集的问题,但我尝试了各种设置,但都不起作用。
现在是拉丁语-1。
喜欢工作
这是与
显示变量相关的
字符集:

character_set_client - latin1
character_set_connection - latin1
character_set_database - latin1
character_set_filesystem - binary
character_set_results - latin1
character_set_server - latin1
character_set_system - utf8
character_sets_dir - /usr/share/mysql/charsets/
collation_connection - latin1_swedish_ci
collation_database - latin1_swedish_ci
collation_server - latin1_swedish_ci
/etc/my.cnf的块

default-character-set=latin1
skip-character-set-client-handshake
转储的块:

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
DROP TABLE IF EXISTS `scenes_raw`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `scenes_raw` (
`scene_name` varchar(40) DEFAULT NULL,
...blabla...
) ENGINE=MyISAM AUTO_INCREMENT=901 DEFAULT CHARSET=utf8;
(我也没有跳过字符集客户端握手进行测试)


打开与服务器的连接后,尝试调用设置名称“utf8”

尝试将您的角色设置客户端设置为UTF-8。我刚试过:

> mysql -u root -p charset_test --default-character-set=latin1
mysql> select * from scenes_raw where MATCH(scene_name) AGAINST('абраксас');
Empty set (0.00 sec)

> mysql -u root -p charset_test --default-character-set=utf8
mysql> select * from scenes_raw where MATCH(scene_name) AGAINST('абраксас');
+------------------+
| scene_name       |
+------------------+
| абраксас         | 
+------------------+
1 row in set (0.00 sec)

编辑:有关更多详细信息,请参阅“SHOW VARIABLES”输出中的“character\u set\u client”,它是MySQL客户端用于发送到服务器的字符集。当它是拉丁语-1时,它不支持西里尔文,但当它是UTF-8时,它应该可以正常工作。

nope,它弄乱了结果的编码,分数仍然是0:(你确定你的数据(在数据库和查询中)实际上是utf8吗?嗯,在dump中,它显示默认字符集=utf8,类似的功能……所以我猜是:)是否可以发布一个显示相关部分的小片段?是的,完成了,在问题主体中。希伯来语字符串“ססקרבא”是否用UTF-8编码?e、 g.如果脚本从文件运行-该文件应为UTF-8编码。是:
文件dump.sql dump.sql:UTF-8 Unicode C程序文本,带有很长的行
实际上是俄语,它现在也停止工作了:(好的,我在my.cnf中使用了默认字符集=latin1并跳过了字符集客户端握手,这当然不好,但现在我遇到了一个问题,当我使用charset=utf8时,dump中的文本乱七八糟,而且据我所知,一次将其转换为utf非常痛苦:(bummer,谢谢你的帮助,虽然这不是我的最终解决方案,但它帮助我找到了问题的根源…奇怪的是,在转储文件中似乎是utf8,所有的排序规则等都是utf8…但文本本身是拉丁文1,非常混乱:/buddy,你是上帝!我已经寻找解决方案多年了:)
> mysql -u root -p charset_test --default-character-set=latin1
mysql> select * from scenes_raw where MATCH(scene_name) AGAINST('абраксас');
Empty set (0.00 sec)

> mysql -u root -p charset_test --default-character-set=utf8
mysql> select * from scenes_raw where MATCH(scene_name) AGAINST('абраксас');
+------------------+
| scene_name       |
+------------------+
| абраксас         | 
+------------------+
1 row in set (0.00 sec)