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

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

内容简介: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


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

查看所有标签

猜你喜欢:

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

Ajax for Web Application Developers

Ajax for Web Application Developers

Kris Hadlock / Sams / 2006-10-30 / GBP 32.99

Book Description Reusable components and patterns for Ajax-driven applications Ajax is one of the latest and greatest ways to improve users’ online experience and create new and innovative web f......一起来看看 《Ajax for Web Application Developers》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

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

HSV CMYK互换工具