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

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

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


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

查看所有标签

猜你喜欢:

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

Jakarta Struts Cookbook中文版

Jakarta Struts Cookbook中文版

斯格科 / 清华大学 / 2007-7 / 56.00元

Jakarta Struts Cookbook(中文版),ISBN:9787302155638,作者:(美)斯格科一起来看看 《Jakarta Struts Cookbook中文版》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具