使用SQLite,这很好用。但是,当我切换到MySQL时,而不是クイン
,我得到???
。该列是TEXT或有时是VARCHAR(255)(在这种情况下我相信它的VARCHAR(255))。
如何让MySQL正确保存这些字符?
答案 0 :(得分:6)
表/列字符集需要设置为支持UTF8等多字节的版本。
您可以通过执行
来告诉当前表字符集mysql> SHOW CREATE TABLE tbl_Name;
它可能没有显示任何情况,它使用你my.cnf中定义的默认值
要更改表格上的字符集:
mysql> ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
如果您有大量数据或无法删除数据并重新开始,我不建议这样做。转换需要首先删除不良数据。
我仔细阅读了这篇文章,它似乎是深入的,而且我记得我自己的战斗与这个非常准确。 http://www.oreillynet.com/onlamp/blog/2006/01/turning_mysql_data_in_latin1_t.html
此外,要以UTF-8创建新表,请将 CHARACTER SET utf8 COLLATE utf8_general_ci 附加到 CREATE TABLE 语句的末尾
答案 1 :(得分:2)
确认您在连接字符串中指定了“charset = utf8”。例如
connectionString="Server=myServerHost;charset=UTF8;Database=myDatabase;Uid=root;Pwd=password;"
如Character Sets and Collations in General中所述 MySQL可以这样做: