内容简介:不同的输入源可以使用不同的字符集,用Go开发的应用中也不例外。现在许多用户都使用的Windows系统,当然也有其他的系统。默认情况下,Go希望程序中使用的字符编码都为UTF-8。如果不是,则必须对给定的字符集进行解码,以便能够正确处理字符串。本文将介绍非UTF-8的字符集如何进行文件读写。
不同的输入源可以使用不同的字符集,用 Go 开发的应用中也不例外。现在许多用户都使用的Windows系统,当然也有其他的系统。默认情况下,Go希望程序中使用的字符编码都为UTF-8。如果不是,则必须对给定的字符集进行解码,以便能够正确处理字符串。本文将介绍非UTF-8的字符集如何进行文件读写。
读/写不同的字符集
Golang 版本
1.12.1
前言
不同的输入源可以使用不同的字符集,用Go开发的应用中也不例外。现在许多用户都使用的Windows系统,当然也有其他的系统。默认情况下,Go希望程序中使用的字符编码都为UTF-8。如果不是,则必须对给定的字符集进行解码,以便能够正确处理字符串。本文将介绍非UTF-8的字符集如何进行文件读写。
实现
package main import ( "fmt" "golang.org/x/text/encoding/charmap" "io/ioutil" "os" ) func main() { // 将字符串编码为Windows-1252并写入文件 encoder := charmap.Windows1252.NewEncoder() s, e := encoder.String("This is sample text with runes Š") if e != nil { panic(e) } ioutil.WriteFile("example.txt", []byte(s), os.ModePerm) // 解码为UTF-8 f, e := os.Open("example.txt") if e != nil { panic(e) } defer f.Close() decoder := charmap.Windows1252.NewDecoder() reader := decoder.Reader(f) b, err := ioutil.ReadAll(reader) if err != nil { panic(err) } fmt.Println(string(b)) }
$ go run main.go This is sample text with runes Š
原理
golang.org/x/text/encoding/charmap
包中包含广泛使用的字符集的 Charmap
类型指针常量。 Charmap
类型提供了为给定字符集创建编码器和解码器的方法。 Encoder
创建编码 Writer
,它将写入的字节编码到所选的字符集。 类似地, Decoder
可以创建解码 Reader
,其将读取到的所有数据解码到所选的字符集。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- oracle查看字符集 修改字符集
- Oracle 字符集实验
- go基础库之解码非Unicode字符集中的字符串
- [MySQL]支持 emoji(字符集问题)
- 带你5分钟读懂MySQL字符集设置
- Docker下mysql设置字符集的方法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。