首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Latin1字符集表格未在Latin1编码中编码字符

Latin1字符集表格未在Latin1编码中编码字符
EN

Stack Overflow用户
提问于 2012-11-15 00:23:31
回答 1查看 703关注 0票数 0

我将其插入的mysql表(让我们称其为foo)是latin1字符编码的(通过显示的How do I see what character set a MySQL database / table / column is?命令显示),并且我的数据库在显示变量之后有以下结果:

代码语言:javascript
复制
| 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编码的数据插入到我的表中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-15 00:50:33

您的命令行客户端似乎使用UTF-8进行显示/输入/输出。666F6FC2AE不是拉丁文-1列中的UTF8编码值,它是“foo®”的拉丁文-1代码。从数据库中获取该数据后,您的CLI将拉丁语-1数据解释为UTF-8,并显示"foo®“。

举例说明:

  • CLI在UTF-8中运行
  • 您在CLI上输入"foo®“,这是将latin-1
  • database设置为66 6F 6F C2AE
  • database连接将输入解释为拉丁-1,认为您要存储的"foo®"
  • column编码为拉丁-1,没问题,数据库存储”foo®“
  • 您从数据库中获取数据,全部为拉丁-1,您将得到的结果是66 6F 6F C2 AE
  • CLI将其解释为UTF-8,显示"foo®"

您需要将连接编码设置为utf8,因为您的客户端发送UTF8。或者说服你的CLI使用拉丁语-1,这可能会更难/不太方便/会产生更多副作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13382824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档