关于字符编码转换的问题 求解惑

走你_ 2016-12-18 09:58:42
打个比方
假设GBK 字符 ‘中’ 对应的是4E4D 瞎写的 只是个假设
UTF16 ‘中’ 对应的是5E5D

现在GBK转UTF16 肯定是先去GBK编码表找4E4D 找到 ‘中’ ,然后去UTF16编码表找 ‘中’这个字 就查到了 5E5D
但是想知道中这个字 在系统里是怎么表示的 肯定不可能是汉字吧 觉得应该也是个数值

但是继而两个编码表都有统一的数值 表示形式了 为什么还要弄个不同编码呢 所以这说明我上面的假设应该有问题

求大神解释下 系统是怎么做的



...全文
287 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
anakin_feng 2016-12-23
  • 打赏
  • 举报
回复
因为unicode是后出来的国际统一标准,这个时候各个国家都有自己的编码了,所以unicode不会去适应其它编码。当然如果大家都用unicode就可以了,但是美国和纯英文字符的国家觉得unicode太浪费资源了,所有就有utf-8,这个编码对与英文字符只占一个字节,但是中文基本就占3个了。不过这个字符集和unicode就有一个转换公式,而不是一个映射表
soton_dolphin 2016-12-23
  • 打赏
  • 举报
回复
还有就是政治地缘问题,每个国家都希望用自己的标准来编码自己的文字,人类都有这么多语言,当然计算机方面编码方面也不会出现大一统的情况
soton_dolphin 2016-12-23
  • 打赏
  • 举报
回复
引用 8 楼 beyond789654 的回复:
[quote=引用 7 楼 soton_dolphin 的回复:] 每种编码都有对应的字符集,可以找到相应的文字
那还是有疑问 既然字符集是统一的 而且字符集也是二进制形式,那大家存储和传输时候直接用字符集不就得了 为什么要搞出这堆编码[/quote] 因为每种编码解决的问题不一样,占用的内存也不一样,如果一个美国人只用英文,他用ASCII就够了,不需要UTF-8。
走你_ 2016-12-23
  • 打赏
  • 举报
回复
引用 7 楼 soton_dolphin 的回复:
每种编码都有对应的字符集,可以找到相应的文字
那还是有疑问 既然字符集是统一的 而且字符集也是二进制形式,那大家存储和传输时候直接用字符集不就得了 为什么要搞出这堆编码
soton_dolphin 2016-12-23
  • 打赏
  • 举报
回复
每种编码都有对应的字符集,可以找到相应的文字
soton_dolphin 2016-12-23
  • 打赏
  • 举报
回复
字符转换很简单,中介就是二进制码,比如“”中“”字用二进制代表是010101, 用UTF-8 编码后,16进制为0xAB,用GBK 编码后16进制值为0xAA, 当需要由 UTF8 转成GBK的时候,先用UTF-8 解码由0xAB 转化为010101,然后再用GBK编码到0xAA
走你_ 2016-12-23
  • 打赏
  • 举报
回复
引用 4 楼 hanguihb 的回复:
首先,gbk和utf有个转换关系。还有,“中”,在最底层是“010101001”形式的。 先按gbk的规则,写个“中”,然后再按utf和gbk的转换关系,把这些010101转成符合utf规则的,就成了。
那按这么理解 所有的编码直接都有一个转换关系表喽?
BernardHan 2016-12-20
  • 打赏
  • 举报
回复
首先,gbk和utf有个转换关系。还有,“中”,在最底层是“010101001”形式的。 先按gbk的规则,写个“中”,然后再按utf和gbk的转换关系,把这些010101转成符合utf规则的,就成了。
走你_ 2016-12-20
  • 打赏
  • 举报
回复
沉了 大神何在
走你_ 2016-12-19
  • 打赏
  • 举报
回复
引用 1 楼 XHYZ1994 的回复:
编码有得是国际标准的,还有的是根据每个国家语言情况编码的,但是向英语字母肯定是一样的编码值。
等于没说
嘻哈愚者 2016-12-18
  • 打赏
  • 举报
回复
编码有得是国际标准的,还有的是根据每个国家语言情况编码的,但是向英语字母肯定是一样的编码值。

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧