MySQL 不适用于 UTF-8

MySQL does not work fine with UTF-8

我将这些行添加到我的默认文件、重新启动服务器、重新创建架构、table 和 table 中的数据,但我的西里尔文数据仍然看起来像“????” . 现在我有一个新用户和这样的配置,但 utf8 仍然不起作用。

[mysqld]
init-connect=SET NAMES utf8
character-set-server=utf8
character-sets-dir=/usr/share/mysql/charsets
default-character-set=utf8

[mysql]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8

[mysqladmin]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8

[mysqlcheck]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8

[mysqldump]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8

[mysqlimport]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8

[mysqlshow]
character-sets-dir=/usr/share/mysql/charsets default-character-set=utf8
#end

这可能会成功。您需要在执行 INSERTUPDATE 之前直接执行一个小查询。在我的db-class中是这样的,这是要适应你的需要。 $charset 需要 "utf8"

$db->query('SET CHARACTER SET "' . $charset . '";');
$result = $db->query($query);

我这样调用函数

$result = $ddlab->db->db($sql,'utf8');

祝你好运!

init-connect=SET NAMES utf8

这条命令很重要。但是,当您以 root(或其他 SUPER 用户)身份连接时,将跳过该命令。

此外,您需要确保您的客户端中的字节是utf8。

并且显示为utf8.

如果您使用的是 mysql 命令行工具: 命令 "chcp" 控制 "code page"。 chcp 65001 提供 utf8,但它也需要安装一个特殊的字符集。 在控制台中设置字体window:Right-click标题上的window→属性→字体→选择Lucida Console“

More discussion.

编辑 2

进入 Workbench(您用于插入文本?)并执行 SELECT HEX('Ремонтные'); 这应该提供 Workbench 中字符集的线索。 utf8 会说 D0A0D0B5D0BCD0BED0BDD182D0BDD18BD0B5 (注意 Dxyy 模式); cp866 会说 90A5ACAEADE2ADEBA5 (注意:高位打开)。啊哈! latin1 会说 3F3F3F3F3F3F3F3F3F。看起来熟悉?????提示:我指的是 Workbench,或者你对它的使用。

我把my.cnf替换成默认的my.cnf,添加了

CHARACTER SET utf8 COLLATE utf8_general_ci; 

对于数据库和所有表。

现在可以正常使用了!非常感谢!