Go 语言中有两种类型的字符。
- 一种是uint8类型,即byte类型,表示ASCII码中的字符。
- 另一种 rune 类型表示 UTF-8 字符,如果您需要处理日文、日文或其他复杂字符,则需要使用该类型。 rune类型相当于int32类型。
byte 类型是 uint8 的别名,对于只占用一个字节的传统 ASCII 编码字符来说完全没问题,例如 var ch byte = ‘A’,并且该字符用单引号括起来。
A的值在ASCII码表中为65,在十六进制中为41,因此以下描述方法是等效的。
var ch byte = 65 或 var ch byte = ‘\x41’ //(\x 总是紧跟着长度为 2 的 16 进制数)
另一种可能性是\后跟长度为 3 的八进制数(例如 \377)。
Go 语言还支持 Unicode (UTF-8),因此字符(也称为 Unicode 代码点或符文)在内存中表示为整数。在文档中一般以 U+hhhh 的形式表示。 h 代表十六进制数。
书写 Unicode 字符时,必须在十六进制数字前添加前缀\u或\U 。 Unicode 至少占用 2 个字节,因此使用 int16 或 int 类型表示。如果需要使用最多 4 个字节,请使用\u前缀;如果需要使用最多 8 个字节,请使用\U前缀。
var ch int = '\u0041'
var ch2 int = '\u03B2'
var ch3 int = '\U00101234'
fmt.Printf("%d - %d - %d\n", ch, ch2, ch3) // 整数
fmt.Printf("%c - %c - %c\n", ch, ch2, ch3) // 文字
fmt.Printf("%X - %X - %X\n", ch, ch2, ch3) // UTF-8バイト
fmt.Printf("%U - %U - %U", ch, ch2, ch3) // UTF-8コードポイント 输出:
65 – 946 – 1053236
A – β – r
41 – 3B2 – 101234
U+0041 – U+03B2 – U+101234
格式说明符%c用于表示字符。与字符一起使用时,打印代表%v或%d字符的整数,并打印%U U+hohh 形式的字符串。
Unicode包有几个内置函数来测试字符,它们的返回值为布尔值(其中ch代表字符):
- 判断是否为字母:unicode.IsLetter(ch)
- 判断是否为数字:unicode.IsDigit(ch)
- 判断是否为空白符号:unicode.IsSpace(ch)
UTF-8 和 Unicode 有什么区别?
Unicode 与 ASCII 一样,都是一种字符集。
字符集为每个字符分配一个唯一的 ID。您使用的每个字符在 Unicode 字符集中都有一个唯一的 ID。例如,上例中a的编码在Unicode和ASCII中都是97。汉字“你”在 Unicode 中的编码是 20320。每个国家的字符集都有不同的字符 ID。无论哪种情况,字符的 Unicode ID 都保持不变。
UTF-8是一种以特定方式对Unicode字符ID进行编码的编码规则,是一种从1到4字节的变长编码规则。编码规则为:
- 0xxxxxx表示与ASCII字符集兼容的字符符号0-127。
- 128到0x10ffff代表其他字符。
根据这一规则,拉丁字符编码一般每个字符占用一个字节,而一个日语字符则占用三个字节。
最广泛意义上的Unicode是指定义字符集和编码规则的标准,例如Unicode字符集和UTF-8、UTF-16编码。




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

