首页 > 其他分享 >golang中 UTF-8 和GBK格式的转换

golang中 UTF-8 和GBK格式的转换

时间:2024-01-31 16:59:10浏览次数:21  
标签:utf8By return 字节 nil GBK golang UTF byte

func main() {
	str := "测试"
	utf8By := []byte(str)
	gbkBy, _ := Utf8ToGbk(utf8By)
	// 直接打印用string转类型的gkb字节数组,会乱码
	fmt.Println("打印GBK", string(gbkBy))
	fmt.Println("UTF8字节长度: ", len(utf8By), "GBK字节长度: ", len(gbkBy))
	utf8By, _ = GbkToUtf8(gbkBy)
	fmt.Println("打印UTF8", string(utf8By))
	return
}

// Utf8ToGbk UTF-8转GBK
func Utf8ToGbk(s []byte) ([]byte, error) {
	reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewEncoder())
	d, e := io.ReadAll(reader)
	if e != nil {
		return nil, e
	}
	return d, nil
}

// GbkToUtf8 GBK转UTF-8
func GbkToUtf8(s []byte) ([]byte, error) {
	reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewDecoder())
	d, e := io.ReadAll(reader)
	if e != nil {
		return nil, e
	}
	return d, nil
}

执行后输出

打印GBK ����
UTF8字节长度:  6 GBK字节长度:  4
打印UTF8 测试

标签:utf8By,return,字节,nil,GBK,golang,UTF,byte
From: https://www.cnblogs.com/jing1024/p/17999576

相关文章

  • golang 使用hex包,转换文件的16进制字符、16进制字节数组
    某些特殊情况下需要根据文件的16进制转换成字符在linux系统用vim保存一个文件,写入两行内容这是测试A这是测试B用linux的xxd命令输出文件的16进制字节数组xxd-g1-it.txtunsignedchart_txt[]={0xe8,0xbf,0x99,0xe6,0x98,0xaf,0xe6,0xb5,0x8b,0x......
  • golang gin框架搭建restapi
    初学golang,尝试用gin框架搭建restapi一)源码准备创建go.mod文件,相当于nodejs中的package.jsongomodinitexamples/web-service-gin新建文件main.go,加入以下代码packagemainimport( "net/http" "github.com/gin-gonic/gin")//albumrepresentsdataaboutarecor......
  • oracle数据表中栏位里的汉字显示未utf-8编码
    问题:解决使用System.Text.Json.JsonSerializer序列化dto为字符串时,要传入如下配置 //解决中文存入数据库后变成UTF-8编码的问题      privateJsonSerializerOptions_jsonSerializerOptions=newJsonSerializerOptions      {         Enc......
  • 【转帖】UTF-8编码发展历史
    https://www.jianshu.com/p/ea91ff32a3c0 1.美国人首先对英文字符编成ASCII码,用一个字节中的低7位表示英文128个字符,高1位统一为02.欧洲人字母上存在注音符,128位不够用,即采用高1位,最多可表示256位3.不同国家字符编码不一致,虽然0--127表示的符号是一样的,但是128--255的......
  • Golang学习(三)基本语法[变量、常量、类型、类型转换]
    变量声明Go语言中有四类标记:标识符(identifiers)、关键字(keywords)、运算符(operators)标点符号(punctuation)以及字面量(literals)。Go语言变量标识符由字母、数字、下画线组成,其中首字符不能为数字,同一字母的大小写在Go语言中代表不同标识。在Go语言中,命名标识符时,通常选择英文的52个大......
  • Golang不可不知的7个并发概念
    Golang不可不知的7个并发概念原创 俞凡DeepNoMind DeepNoMind 2024-01-1311:08 发表于上海 听全文并发性支持是Golang最重要的原生特性之一,本文介绍了Golang中和并发性相关的7个概念。原文: Golang:7must-knowconcurrencyrelatedconcepts[1]并发是Go编程......
  • nginx-go-crossplane crossplane golang 版本的nginx 配置解析包
    nginx-go-crossplane属于python版本crossplanenginx配置解析包的golang移植可以实现nginx配置解析转换为json格式的数据,当然也支持将json转换为nginx配置格式说明对于希望基于nginx搞自己的流量统一平台,同时希望基于api管理的,nginx-go-crossplane是一个很不错的选择......
  • 基于fx构建大型golang应用
    基于FX构建大型Golang应用原创 俞凡DeepNoMind DeepNoMind 2023-12-2313:29 发表于上海 1人听过Uber开源的FX可以帮助Go应用解耦依赖,实现更好的代码复用。原文: HowtobuildlargeGolangapplicationsusingFX[1]构建复杂的Go应用程序可能会引入很多耦合Go......
  • 使用Golang实现ping检测主机在线的功能
    使用"github.com/go-ping/ping"这个第三方库可以非常简单的实现ping功能packagemainimport("fmt""os""time""github.com/go-ping/ping")funcCheckHostOnline(ipaddrstring)bool{pinger,err:=ping.N......
  • notepad怎么保存utf-8格式 菜单栏"编码”下拉菜单中选择“UTF-8” 或者Encoding选择 U
    notepad怎么保存utf-8格式菜单栏"编码”下拉菜单中选择“UTF-8”或者Encoding选择UTF-8,或者菜单栏-格式->以UTF-8无BOM格式编码要在Notepad中保存UTF-8格式,可以按照以下步骤操作:1.打开Notepad,然后新建一个文本文档。2.将要保存为UTF-8格式的文本复制粘贴到Notepad中。3.点......