有趣的问题...如果我有一个 CHARSET=utf8 的 MySQL 表,并且我打开一个使用 latin1 编码的连接,会发生什么?
我试过了,甚至可以正确存储和检索 ß 和 æ 等字符。这些字符在 utf8 和 latin1 中用不同的字节序列表示,所以我没想到它会起作用。
MySQL 是否在字符编码之间进行某种即时转换?
最佳答案
在您连接到另一个连接字符集之前,您会觉得它有效。然后你会看到奇怪的字符,肯定会后悔。
您在数据库中存储的字节只有在您使用 utf8 转换读取它们时才有意义。但是你告诉 mysql 该字段是拉丁语,所以他不会理解,但无论如何他都会将它们发送给你(你是人,他服从)。当您与 utf8 连接时,您将通过此字符集读取它们并读取它们。
但是如果连接更改了字符集或者您稍后尝试更改字段的字符集,您将遇到麻烦并且需要像这样的技巧来读取单个字段内容:
convert(cast(convert(FieldNameMessed using latin1) as binary) using utf8)
关于mysql - 如果我使用 latin1 连接到 utf8 MySQL 数据库表会怎样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1384040/