MySQL不适用于UTF-8

时间:2015-03-22 11:02:12

标签: mysql utf-8

我将这些行添加到我的默认文件,重新启动的服务器,重新创建的模式,表格中的表格和数据,但我的西里尔文数据仍然看起来像'????'。 现在我有一个新用户和这样的配置,但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

3 个答案:

答案 0 :(得分:1)

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

CHARACTER SET utf8 COLLATE utf8_general_ci; 

用于DB和所有表。

现在它工作正常!非常感谢你!

答案 1 :(得分:0)

这可能会成功。您需要在执行INSERTUPDATE之前直接执行小型查询。在我的db-class中,它看起来像这样,可以根据您的需要进行调整。 $charset需要" utf8"

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

我像这样调用函数

$result = $ddlab->db->db($sql,'utf8');
祝你好运!

答案 2 :(得分:0)

init-connect=SET NAMES utf8

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

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

显示屏是utf8。

如果您使用的是mysql命令行工具: 命令“chcp”控制“代码页”。 chcp 65001提供了utf8,但它也需要安装一个特殊的字符集。 在控制台窗口中设置字体:右键单击窗口标题→属性→字体→选择Lucida控制台“

More discussion

修改2

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