mysql 与俄罗斯的比赛

标签 mysql character-encoding match

尝试解决这个问题已经很长时间了......

SELECT MATCH(name) AGAINST('абраксас')

(俄语)不起作用,但是

SELECT MATCH(name) AGAINST('abraxas')

(英语)工作完美。
我知道这是字符集的问题,但我尝试了各种设置,但没有用。
目前是 latin-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 block

default-character-set=latin1
skip-character-set-client-handshake

转储 block :

/*!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;

(我也做了没有skip-character-set-client-handshake的测试)

SHOW TABLE STATUS WHERE Name = 'scenes_raw'\G
Name: scenes_raw
Engine: MyISAM
Version: 10
Row_format: Dynamic
Index_length: 23552
Collation: utf8_general_ci
Checksum: NULL
Create_options:

最佳答案

尝试将您的character_set_client 设置为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)

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

关于mysql 与俄罗斯的比赛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2463092/

相关文章:

PHP - 特殊字符(欧元符号)未正确显示(RSS feed/SimplePie)

正则表达式匹配引号外的所有单词?

PHP无法连接mysql数据库

python matplotlib 标签/标题错误字符

csv - Google Apps 脚本 txt 文件 getDataAsString() 返回字符之间的 � 和方形符号

php - 当使用匹配语句使用转义斜杠时,Mysql 不返回结果

ios 如何正确使用 NSPredicate 将 NSString 与核心数据匹配?

java - 实行预约系统

php - 使用 mysql 在 php 中进行星级评分

mysql - 如何使用 int (+1) 更新字符串并将其转换回字符串