Go 字符串编码,Unicode 和UTF-8

栏目: Go · 发布时间: 5年前

内容简介:1.字符串字符串在Go语言中以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、 float32、foat64等)一样。字符串的值为双引号中的内容,可以在Go语言的源码中直接添加非ASCⅡ码字符

1.字符串

字符串在 Go 语言中以原生数据类型出现,使用字符串就像使用其他原生数据类型(int、bool、 float32、foat64等)一样。

字符串的值为双引号中的内容,可以在Go语言的源码中直接添加非ASCⅡ码字符

Go语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下所示

转移符 含义

\r        回车符(返回行首)
\n        换行符(直接跳到下一行的同列位置)
\t        制表符
\'        单引号
\"        双引号
\\        反斜杠

2.字符串实现基于UTF-8编码

go 语言里的字符串的内部实现使用UTF8编码. 通过rune类型,可以方便地对每个UTF-8字符进行访问。

当然,Go语言也支持按传统的ASCII码方式进行逐字符访问。

3.字符

字符串中的每一个元素叫做“字符”,在遍历或者单个获取字符非元素时可以获得字符。

Go语言的字符有以下两种:

一种是uint8类型,或者叫byte型,代表了ASCII码的一个字符。
另一种是rune类型,代表一个UTF-8字符。当需要处理中文、日文或者其他复合字符时,
则需要用到rune类型。rune类型实际是一个int32。

使用 fmt.Printf中的“%T”动词可以输出变量的实际类型,使用这个方法可以查看byte和rune的本来类型,代码如下:

var a byte = 'a'
fmt.Printf("%d %T\n", a, a)

var b rune='你'
fmt.Printf("%d %T\n", b, b)

输出如下
97 uint8
20320 int32

4.UTF-8和 Unicode有何区别?

Unicode是字符集。ASCⅡ也是一种字符集。

字符集为每个字符分配一个唯一的ID,我们使用到的所有字符在 Unicode字符集中都有唯一的一个ID对应,

例如上面例子中的a在 Unicode与ASCII中的编码都是97。

“你“在 Unicode中的编码为20320,但是在不同国家的字符集中,“你”的ID会不同。

而无论任何情况下, Unicode中的字符的ID都是不会变化的。

UTF-8是编码规则,将 Unicode中字符的ID以某种方式进行编码。UTF-8的是一种

变长编码规则,从1到4个字节不等。

5.计算字符串长度

tip := "genji is a ninja"

fmt.Println(len(tip))

tip2 := "认真"
fmt.Println(len(tip2))

结果:
16
6

len 表示字符串的ASCII 字符个数或字节长度

所以:

ASCII 字符串长度使用len() 长度

Unicode 字符串长度使用utf8.RuneCountInString()

5.字符串遍历

1.遍历每一个 ASCII 字符

直接使用for

2.按Unicode 字符遍历字符串

使用 range

str := "快乐 everyday"

    for _, s := range str{
        fmt.Printf("unicode: %c %d\n", s,s)
    }

    for i:=0;i<len(str) ;i++  {
        fmt.Printf("ascii: %c %d\n", str[i], str[i])
}

结果如下:

unicode: 快 24555

unicode: 乐 20048

unicode: 32

unicode: e 101

unicode: v 118

unicode: e 101

unicode: r 114

unicode: y 121

unicode: d 100

unicode: a 97

unicode: y 121

ascii: å 229

ascii: ¿ 191

ascii: « 171

ascii: ä 228

ascii: ¹ 185

ascii:  144

ascii: 32

ascii: e 101

ascii: v 118

ascii: e 101

ascii: r 114

ascii: y 121

ascii: d 100

ascii: a 97

ascii: y 121

6.字符串格式化

Go 字符串编码,Unicode 和UTF-8


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

海星模式

海星模式

奥瑞·布莱福曼、罗德·贝克斯特朗 / 李江波 / 中信出版社 / 2008-1 / 36.00元

如果砍掉一只蜘蛛的脑袋,毫无疑问它会死掉;但是砍掉海星的一条手臂,它却会长出一只新的来,就连那只砍掉的手臂也会长成一个完整的新海星。传统意义上自上而下的组织模式就像蜘蛛,然而现在正在改变着企业和世界面貌的却是海星型组织。 维基百科、craigslist和Skype的成功下面隐藏着什么样的力量?易趣公司和通用电气公司与废奴和女权运动又有什么共同之处?到底是什么样的重大选择使得通用汽车公司与丰田......一起来看看 《海星模式》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具