2017-09-25 30 views
0

我想将一些utf8编码数据插入到mysql数据库中。特殊字符在浏览器中正确显示,但不在我的数据库中。手动将排序规则更改为utf8_unicode_ci并确认“此操作将尝试将数据转换为新排序规则”后,数据将正确显示。但是,如果我创建使用SQL排序规则不起作用

CREATE TABLE IF NOT EXISTS table_name (
    date date NOT NULL, 
    searchengine VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    location VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    keyword VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    position INT NOT NULL, 
    competition VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, 
    url VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL  
) 

表,并在创建表后插入数据,该数据仍无法正常显示,即使是总汇utf8_unicode_ci。有想法该怎么解决这个吗?

+0

您尚未提供足够的信息来回答 - 您是否收到问号?胡言乱语?截断文本?什么?在任何情况下,看到这个解决您的问题:http://stackoverflow.com/questions/38363566/trouble-with-utf8-characters-what-i-see-is-not-what-i-store –

回答

1

A 排序规则是一组定义如何比较和排序字符串的规则。 MySQL中的每个排序规则都属于一个字符集。每个字符集都至少有一个排序规则,并且大多数都有两个或更多排序规则。排序规则会根据权重对字符进行排序。

utf8mb4_unicode_ci基于Unicode的排序和比较标准,可以在各种语言中进行精确排序。

+0

手动设置在插入数据后,在phpmyadmin中将utf8mb4_unicode_ci整理为正常工作。数据得到正确转换。但是,如上面所示的代码创建表时,将排序规则设置为utf8mb4_unicode_ci,然后插入数据不起作用。数据不会被转换。 – erlDan

+0

https://dev.mysql.com/doc/refman/5.5/en/charset-unicode-conversion.html –

+0

我想你需要使用utf8而不是utf8mb4。请检查上述评论中的链接。 –