关注互联网应用及运维技术的个人博客

Golang对中文字符串截取不出现乱码的方法

在使用golang的时候,如果直接对string截取,有可能接触出来的字符串最后是一个不能显示的乱码。

s := "中文字符串"fmt.Println(s[:4])

这是因为对字符串的截取犹如是对btye(8bit)数组的截取,而中文是不止一个字节的,所以就造成截取一个字的一半。而无法显示

解决方法

转换成[]rune

s := "中文字符串"s2 := []rune(s)fmt.Println(string(s2[:4]))

同时len(rune)才是中文字符串的字符个数

byte和rune在golang中的定义

// byte is an alias for uint8 and is equivalent to uint8 in all ways. It is// used, by convention, to distinguish byte values from 8-bit unsigned// integer values.type byte = uint8// rune is an alias for int32 and is equivalent to int32 in all ways. It is// used, by convention, to distinguish character values from integer values.type rune = int32

rune类型为4字节常用来处理unicode或utf-8字符

赞(0)
未经允许不得转载:飞天狒狒 » Golang对中文字符串截取不出现乱码的方法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址