[英]What happens if I connect to a utf8 MySQL DB table using latin1?
有趣的问题...如果我有一个带有CHARSET = utf8的MySQL表,并且使用latin1编码打开了一个连接,会发生什么?
我试过了,甚至ß和æ等字符也可以正确存储和检索。 这些字符在utf8和latin1中用不同的字节序列表示,因此我没想到它会起作用。
MySQL是否在字符编码之间进行某种即时转换?
在连接另一个连接字符集之前,您将感觉像它一直有效。 然后,您将看到奇怪的角色,并且一定会后悔。
您在数据库中存储的字节只有在使用utf8转换读取它们时才有意义。 但是您告诉mysql该字段是拉丁语,所以他不会理解,但是无论如何他都会将它们发送给您(您是人类,他服从)。 当您连接到utf8时,您将通过此字符集阅读它们,然后阅读它们。
但是,如果连接更改了字符集,或者您稍后尝试更改该字段的字符集,则会遇到麻烦,并且将需要以下技巧来读取单个字段内容:
convert(cast(convert(FieldNameMessed using latin1) as binary) using utf8)
是的,根据配置,mysql确实进行了chrset转换。 要更改连接的密码,可以使用SET NAMES
SET NAMES utf8;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.