【发布时间】:2017-10-05 15:31:47
【问题描述】:
MySql 支持西里尔字母有一个奇怪的问题。数据库从一开始就在 utf8_unicode_ci 中创建,但表没有。现在表数据,如果以西里尔语提供,看起来像这样????????,如果我从 utf 开始创建一个表没有问题,但是如果我尝试使用更改现有的表编码
ALTER TABLE <table_name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
应该更改现有数据或
ALTER TABLE Strategies
CHARACTER SET utf8,
COLLATE utf8_unicode_ci;
这应该改变未来的数据,它不起作用。
我也更改了 my.cnf 文件并添加到
[mysqld]
#
#default-character-set=utf8 this one breaks mysql restart
character-set-server=utf8
skip-character-set-client-handshake
collation-server=utf8_unicode_ci
init-connect='SET NAMES utf8'
init_connect='SET collation_connection = utf8_general_ci'
如果我运行 SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';我明白了:
我还直接在我的管理员的 PHP 中更改为 utf,它实际上显示该表是 utf,但现有的 ????????? 没有任何反应或未来的西里尔文输入。
希望其他人遇到过这种问题,非常感谢任何帮助或建议。谢谢。
【问题讨论】:
-
你得到什么...从 information_schema.columns 中选择 CHARACTER_SET_NAME、COLLATION_NAME 其中 table_schema='
' 和 table_name=' '。 ? -
有问题的表/列的原始编码是什么?
-
它曾经是 latin1_swedish_ci
-
命令好像返回 0... 可能我没有完全理解什么是 table_schema。