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
这可能会成功。您需要在执行 INSERT
或 UPDATE
之前直接执行一个小查询。在我的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“
编辑 2
进入 Workbench(您用于插入文本?)并执行 SELECT HEX('Ремонтные');
这应该提供 Workbench 中字符集的线索。 utf8 会说 D0A0D0B5D0BCD0BED0BDD182D0BDD18BD0B5
(注意 Dxyy 模式); cp866 会说 90A5ACAEADE2ADEBA5
(注意:高位打开)。啊哈! latin1 会说 3F3F3F3F3F3F3F3F3F
。看起来熟悉?????提示:我指的是 Workbench,或者你对它的使用。
我把my.cnf替换成默认的my.cnf,添加了
CHARACTER SET utf8 COLLATE utf8_general_ci;
对于数据库和所有表。
现在可以正常使用了!非常感谢!
我将这些行添加到我的默认文件、重新启动服务器、重新创建架构、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
这可能会成功。您需要在执行 INSERT
或 UPDATE
之前直接执行一个小查询。在我的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“
编辑 2
进入 Workbench(您用于插入文本?)并执行 SELECT HEX('Ремонтные');
这应该提供 Workbench 中字符集的线索。 utf8 会说 D0A0D0B5D0BCD0BED0BDD182D0BDD18BD0B5
(注意 Dxyy 模式); cp866 会说 90A5ACAEADE2ADEBA5
(注意:高位打开)。啊哈! latin1 会说 3F3F3F3F3F3F3F3F3F
。看起来熟悉?????提示:我指的是 Workbench,或者你对它的使用。
我把my.cnf替换成默认的my.cnf,添加了
CHARACTER SET utf8 COLLATE utf8_general_ci;
对于数据库和所有表。
现在可以正常使用了!非常感谢!