go基础库之读/写不同的字符集

栏目: Go · 发布时间: 7年前

内容简介:不同的输入源可以使用不同的字符集,用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 ,其将读取到的所有数据解码到所选的字符集。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

The Master Switch

The Master Switch

Tim Wu / Knopf / 2010-11-2 / USD 27.95

In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

随机密码生成器
随机密码生成器

多种字符组合密码

html转js在线工具
html转js在线工具

html转js在线工具