Go语言中GBK字节数计算

前言

Go语言中统一使用UTF-8编码格式,但是在操作设备的时候,设备侧的编码格式为GBK,那么如何转换及计算字节数呢?

一、GBK编码

GBK编码占1个或者2个字节,不能简单的通过字符格式计算字节数。
UTF8占1~4个字节不等,如果不直接把UTF8格式的字符串转换成GBK编码,则计算就会出错。

二、解决的办法

先进行字符编码格式转换,在通过len函数计算字节数,示例代码如下:

import (
	"bytes"
	"io/ioutil"
	"testing"
	"unicode/utf8"

	"golang.org/x/text/encoding/simplifiedchinese"
	"golang.org/x/text/transform"
)

func TestGBKLength(t *testing.T) {
	str := "兔年大吉2022-02-03AbcD您好"
	t.Logf("UTF8字符数:%d", utf8.RuneCountInString(str))
	t.Logf("UTF8字节数:%d", len(str))
	reader := transform.NewReader(bytes.NewReader([]byte(str)), simplifiedchinese.GBK.NewEncoder())
	d, e := ioutil.ReadAll(reader)
	if e != nil {
		t.Fatal(e)
	}
	t.Logf("GBK字节数:%d", len(d))
}

运行结果:

UTF8字符数:20
UTF8字节数:32
GBK字节数:26

总结

在实际开发中要分清楚字符数和字节数,有的产品说明不严谨,说的是32个字符其实是32个字节,GBK编码格式下输入16个汉字就提示超过32个字符了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要要将要将一个要将一个字符要将一个字符转要将一个字符转换要将一个字符转换为要将一个字符转换为GBK要将一个字符转换为GBK编要将一个字符转换为GBK编码要将一个字符转换为GBK编码的要将一个字符转换为GBK编码的字要将一个字符转换为GBK编码的字节数要将一个字符转换为GBK编码的字节数组要将一个字符转换为GBK编码的字节数组,要将一个字符转换为GBK编码的字节数组,可以要将一个字符转换为GBK编码的字节数组,可以使用要将一个字符转换为GBK编码的字节数组,可以使用Java要将一个字符转换为GBK编码的字节数组,可以使用Java要将一个字符转换为GBK编码的字节数组,可以使用Java的要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: 要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java 要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str =要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = "要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = "要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; 要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[]要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes =要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); 要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串"要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串"要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的编要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的编码要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的编码,要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的编码,这要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的编码,这里要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的编码,这里是要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的编码,这里是GBK要将一个字符转换为GBK编码的字节数组,可以使用Java的getBytes()方法。 示例代码如下: ```java String str = ""; byte[] bytes = str.getBytes("GBK"); ``` 上述代码,字符串""被转换为GBK编码的字节数组。getBytes()方法的参数指定了要使用的编码,这里是GBK

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空间法则

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值