前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入理解unicode编码和utf-8编码区别

深入理解unicode编码和utf-8编码区别

作者头像
暮雨
发布2019-08-21 10:26:04
9260
发布2019-08-21 10:26:04
举报
文章被收录于专栏:云端漫步云端漫步

算法总结

计算机的世界中,充满了各种编码,编码就是将世界的事物,通过定义的一套数字规范,进而实现其可以在计算机中存储可计算。unicode码存在的目的是为了统一对世界各国各民族的语言文字进行规范的一套编码。如下图所示

unicode码只是一种编码的规范,它没有定义在计算机中怎么对其存储,在unicode编码规范中,由于unicode编码覆盖面广阔,码值分布在0到2的32次方之间。在计算机中可以使用4byte来存储一个unicode码,但是这样的存储是不有些浪费存储空间,于是就有大神出来解决这个问题,Ken Thompson-unix之父,同时也是go语言之父,参与设计了UFT-8来解决unicode的存储问题。unicode编码到uft-8之间的转化是怎么规范的呢?

代码语言:javascript
复制
0xxxxxxx

将unicode码的二进制按从右到左的顺序依次填入x位置,就可完成uft-8的转码。

实战演示

如:我们现在要将中文的"你好“转化为utf-8编码进行存储,在此我们不要使用编程语言来实现,通过手动的方式一步一步的完成转化

  1. 将"你好"转化为unicode码 在http://www.chi2ko.com/tool/CJK.htm网站中,查找"你好"两个汉字对应的unicode码值
代码语言:javascript
复制
你 ----> 4F60  
好 ----> 597D

通过同上表中的转化规则比较,符合第三行转化规则,即1110xxxx 10xxxxxx 10xxxxxx

unicode转二进制通过命令行工具bc进行转化

代码语言:javascript
复制
~  bc
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
obase=2
ibase=16
4F60
100111101100000
597D
101100101111101

转化实现

代码语言:javascript
复制
100 111101 100000  ----> 11100100 10111101 10100000(你)
101 100101 111101  ----> 11100101 10100101 10111101(好)

验证

代码语言:javascript
复制
package main

import (
    "fmt"
)

func main() {
    var aa = "你好"
    for i := 0; i < len(aa); i++ {
        fmt.Printf("%b ", aa[i])
        if (i+1)%3 == 0 {
            fmt.Println()
        }
    }
}

$go run demo.go
11100100 10111101 10100000
11100101 10100101 10111101

同我们手动转化的结果相同。

总结

通过以上的实验操作,你应该全面的理解了unicode编码和utf-8编码之间的区别及转化算法了吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云端漫记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算法总结
  • 实战演示
  • 总结
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档