我将其插入的mysql表(让我们称其为foo)是latin1字符编码的(通过显示的How do I see what character set a MySQL database / table / column is?命令显示),并且我的数据库在显示变量之后有以下结果:
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1在foo中,我有一个以字符串foo®存储在varchar(255)列中的条目,当我以十六进制查看它时,它显示它是以utf8 (666F6FC2AE)编码的。从mysql提示符运行select查询将显示foo®。但是,当我插入以MySQL666F6FAE编码的相同字符串时,当我在相同的latin1命令提示符中运行select时,我得到一个foo�。为什么我的latin1表中有utf8编码的数据,为什么我不能将latin1编码的数据插入到我的表中?
发布于 2012-11-15 00:50:33
您的命令行客户端似乎使用UTF-8进行显示/输入/输出。666F6FC2AE不是拉丁文-1列中的UTF8编码值,它是“foo®”的拉丁文-1代码。从数据库中获取该数据后,您的CLI将拉丁语-1数据解释为UTF-8,并显示"foo®“。
举例说明:
66 6F 6F C2AE66 6F 6F C2 AE您需要将连接编码设置为utf8,因为您的客户端发送UTF8。或者说服你的CLI使用拉丁语-1,这可能会更难/不太方便/会产生更多副作用。
https://stackoverflow.com/questions/13382824
复制相似问题