博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TODO:字节的那点事Go篇
阅读量:5833 次
发布时间:2019-06-18

本文共 769 字,大约阅读时间需要 2 分钟。

hot3.png

TODO:字节的那点事Go篇

12800003df376b8ed9ca-1.jpg

(本文go version go1.7.3 darwin/amd64)

在Golang中string底层是由byte数组组成的。

fmt.Println(len(“dsd好”))

输出的长度是6

fmt.Println(len(string(rune(‘好’))))

输出的长度是3

fmt.Println(len([]rune(“好的2s”)))

输出的长度是4

所以用string存储unicode的话,如果有中文(中文是由3个字节组成

),按下标是访问不到的,因为你只能得到一个byte。 要想访问中文的话,还是要用rune切片,这样就能按下标访问。

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到4个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

为什么要做UTF-8转码?很大语言直接支持UTF-8,部分语言存储字符串到内存时直接使用 UTF-8编码。UTF-8是一个通用解决方案,一直有人维护。例如Golang语言就直接支持UTF-8。

接下来我们来看看Golang是怎么处理UTF-8转码,如图

127c00010479249758e0-1.jpg

输出:

12820000ba444d258a72-1.jpg

为什么fmt.Println(StrToByte(“國”))输出[11]呢?由先了解到byte到范围是0~256,22283对256取余为11。

在Golang中就是这样使用UTF-8,你是否注意到其中到使用细节呢。

wxgzh:ludong86

qrcode_for_gh_6bb1f39ae99c_258-1

转载于:https://my.oschina.net/todosomeone/blog/800387

你可能感兴趣的文章
fastjson
查看>>
vue的双向绑定原理及实现
查看>>
我的友情链接
查看>>
我的一些开源项目(前端)
查看>>
创建job,删除job,查询job
查看>>
PMP取胜之路心得体会
查看>>
再次公布未修复的Windows零日漏洞,这名研究人员被指“不负责”
查看>>
网易易盾验证码移动端迎来新版本 开始支持智能无感知验证
查看>>
桌面化Redhat6.5版本Linux远程连接win7 桌面
查看>>
通过阿里云拉取Google云上的镜像
查看>>
java反序列化 - Transformer类可以执行恶意代码的原理
查看>>
三剑客sed、awk
查看>>
SQL server清除错误日志的方法
查看>>
centos forever node 开机自启动
查看>>
web自动化爬虫selenium centos 无GUI环境配置
查看>>
马哥linux作业--第五周
查看>>
分布式光纤振动监测系统DAS
查看>>
day14 事务&连接池
查看>>
escape,encodeURI,encodeURIComponent
查看>>
我的友情链接
查看>>