1

我使用来自多种语言的 utf8 字符串运行 sqlite3 数据库。由于各种原因,我想迁移到 mysql,但由于 mysql-collat​​ion 功能,我经常遇到麻烦。

一个问题是我什至无法可靠地知道我的数据库中有什么。(例如,对于非拉丁字符,我得到“?”,对于诸如 öé 等基于拉丁字符的字符,我得到“�”——但我完全不知道问题出在从 sqlite3 到 mysql 的导入还是从mysql数据库。)

有没有办法摆脱这个“功能”,让 mysql 做我告诉它的事情,而不是试图变得聪明?我在任何地方都使用 UTF-8,而且我从不需要对字符串进行任何修改:输入始终为 UTF-8,输出应始终为 UTF-8。此外,我真的很想知道数据库中真正存储的是什么——即在读出期间没有整理功能会破坏数据。

4

2 回答 2

0

您可以使用 MySQLVARBINARY列类型,它存储任意字节序列,而不用任何特定的字符集解释它们(或者可能VARCHAR BINARY,这是微妙的不同)。

于 2013-10-24T09:35:34.653 回答
0

MySQL 使用latin1_swedish_ci,除非您明确指定不同的内容。这与聪明相反。必须聪明并更改该默认设置。这可以通过例如--character-set-server--collation-server命令行选项来完成。有关其他方式和更多选项,请参阅指定字符集和排序规则。

于 2013-10-24T09:44:25.930 回答