charsetconv

package module
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 27, 2023 License: MIT Imports: 8 Imported by: 0

README

charsetconv

字符集编解码库,提供以下三种接口。

编码(Encode)

将utf-8字符集编码的数据编码成其他字符集形式

func Encode(src io.Reader, dest io.Writer, destEncoding encoding.Encoding, useStageFile bool) error
func EncodeWith(src io.Reader, dest io.Writer, destCharset Charset, useStageFile bool) error
func EncodeString(src string, destCharset Charset) ([]byte, error)

解码(Decode)

将非utf-8字符集编码的数据解码成utf-8字符集编码形式

func Decode(src io.Reader, dest io.Writer, srcEncoding encoding.Encoding, useStageFile bool) error
func DecodeWith(src io.Reader, dest io.Writer, srcCharset Charset, useStageFile bool) error
func DecodeToString(src []byte, srcCharset Charset) (string, error)

转换(Convert)

在任意两种字符集之间转换编码

func Convert(src io.Reader, srcEncoding encoding.Encoding, dest io.Writer, destEncoding encoding.Encoding, useStageFile bool) error
func ConvertWith(src io.Reader, srcCharset Charset, dest io.Writer, destCharset Charset, useStageFile bool) error
func DecodeToString(src []byte, srcCharset Charset) (string, error)

Documentation

Overview

Package charsetconv @Description: 这个包实现了文本编码转换功能,用于将基于字符集的文本数据转化为另一字符集。 比如将UTF8文本转化为GBK文本,反之亦然。由于go语言原生基于UTF8编码,因此,在go语言语境中, 文本编解码的含义是特定的: 编码(encode)是指,将UTF8文本转换为以另一字符集编码的文本数据 解码(decode)是指,将以其他字符集编码的文本数据转换为UTF8编码的文本

本包提供了Encode、Decode两种接口,同时还提供了Convert接口,即在任意两种字符集之间进行转换的接口,提供了诸如直接从GBK编码到Big5编码转换的能力。

需要注意的是,编码转换并不一定总是能够成功的,结果取决于进行转换的两种字符集之间的兼容性,而且还和转换的方向有很大关系。 例如:将一段Windows-1252字符集编码的文本转换为GBK形式,大概率是会成功的,而反过来则很可能会失败, 究其原因,在Windows-1252字符集中并不包含汉字的编码。

本包基于golang.org/x/text/encoding封装,目的在于提供一个简单、易用、直观的接口。

Index

Constants

View Source
const (
	UTF8    Charset = "utf-8"
	UTF16           = "UTF-16"
	UTF16BE         = "UTF-16BE"
	UTF16LE         = "UTF-16LE"
)
View Source
const (
	GBK     Charset = "GBK"
	GB18030         = "GB18030"
	Big5            = "Big5"
)
View Source
const (
	EUCJP     Charset = "EUC-JP"
	ISO2022JP         = "ISO-2022-JP"
	ShiftJIS          = "Shift_JIS"
)
View Source
const (
	Macintosh   Charset = "macintosh"
	IBM037              = "IBM037"
	IBM437              = "IBM437"
	IBM850              = "IBM850"
	IBM852              = "IBM852"
	IBM855              = "IBM855"
	IBM00858            = "IBM00858"
	IBM860              = "IBM860"
	IBM862              = "IBM862"
	IBM863              = "IBM863"
	IBM865              = "IBM865"
	IBM866              = "IBM866"
	IBM1047             = "IBM1047"
	IBM01140            = "IBM01140"
	ISO88591            = "ISO-8859-1"
	ISO88592            = "ISO-8859-2"
	ISO88593            = "ISO-8859-3"
	ISO88594            = "ISO-8859-4"
	ISO88595            = "ISO-8859-5"
	ISO88596            = "ISO-8859-6"
	ISO88596E           = "ISO-8859-6-E"
	ISO88596I           = "ISO-8859-6-I"
	ISO88597            = "ISO-8859-7"
	ISO88598            = "ISO-8859-8"
	ISO88598E           = "ISO-8859-8-E"
	ISO88598I           = "ISO-8859-8-I"
	ISO88599            = "ISO-8859-9"
	ISO885910           = "ISO-8859-10"
	ISO885913           = "ISO-8859-13"
	ISO885914           = "ISO-8859-14"
	ISO885915           = "ISO-8859-15"
	ISO885916           = "ISO-8859-16"
	KOI8R               = "KOI8-R"
	KOI8U               = "KOI8-U"
	Windows874          = "Windows-874"
	Windows1250         = "Windows-1250"
	Windows1251         = "Windows-1251"
	Windows1252         = "Windows-1252"
	Windows1253         = "Windows-1253"
	Windows1254         = "Windows-1254"
	Windows1255         = "Windows-1255"
	Windows1256         = "Windows-1256"
	Windows1257         = "Windows-1257"
	Windows1258         = "Windows-1258"
)

Variables

This section is empty.

Functions

func AddCharsetAlias

func AddCharsetAlias(charset Charset, alias string)

func CloseFile

func CloseFile(file *os.File)

func Convert

func Convert(src io.Reader, srcEncoding encoding.Encoding, dest io.Writer, destEncoding encoding.Encoding, useStageFile bool) error

Convert

@Description: 字符集转换函数
@param src 数据源
@param srcEncoding 数据源编码
@param dest 输出
@param destEncoding 输出编码
@param useStageFile 是否使用中转文件
@return error

func ConvertTo

func ConvertTo(src []byte, srcCharset Charset, destCharset Charset) ([]byte, error)

ConvertTo

@Description: 字符集转换函数
@param src 数据源
@param srcCharset 数据源编码字符集
@param destCharset 输出编码字符集
@return []byte
@return error

func ConvertWith

func ConvertWith(src io.Reader, srcCharset Charset, dest io.Writer, destCharset Charset, useStageFile bool) error

ConvertWith

@Description: 字符集转换函数
@param src 数据源
@param srcCharset 数据源编码字符集
@param dest 输出
@param destCharset 输出编码字符集
@param useStageFile 是否使用中转文件
@return error

func Decode

func Decode(src io.Reader, dest io.Writer, srcEncoding encoding.Encoding, useStageFile bool) error

Decode

@Description: 解码函数,将指定编码形式数据转换为utf-8编码数据
@param src 待解码的数据源
@param dest 解码后的数据输出位置
@param srcEncoding 数据源编码
@param useStageFile 是否使用中转文件
@return error

func DecodeToString

func DecodeToString(src []byte, srcCharset Charset) (string, error)

DecodeToString

@Description: 解码函数,将数据源解码为字符串
@param src 待解码的数据源
@param srcCharset 数据源编码字符集
@return string
@return error

func DecodeWith

func DecodeWith(src io.Reader, dest io.Writer, srcCharset Charset, useStageFile bool) error

DecodeWith

@Description: 解码函数,将指定编码形式数据转换为utf-8编码数据
@param src 待解码的数据源
@param dest 解码后的数据输出位置
@param srcCharset 数据源编码字符集
@param useStageFile 是否使用中转文件
@return error

func Encode

func Encode(src io.Reader, dest io.Writer, destEncoding encoding.Encoding, useStageFile bool) error

Encode

@Description: 编码函数,将utf-8数据转换为指定编码形式
@param src 待编码的数据源,注意需确保该数据源以utf-8格式编码
@param dest 编码后的数据输出位置
@param destEncoding 目标编码格式
@param useStageFile 是否使用中转文件,如果设置了使用中转区文件,则先将编码后的数据缓存到中转区文件,编码成功后再从中转区文件拷贝到dest中
@return error

func EncodeString

func EncodeString(src string, destCharset Charset) ([]byte, error)

EncodeString

@Description: 编码函数,将字符串编码为指定字符集数据
@param src 待编码的字符串
@param destCharset 目标字符集
@return []byte
@return error

func EncodeWith

func EncodeWith(src io.Reader, dest io.Writer, destCharset Charset, useStageFile bool) error

EncodeWith

@Description: 编码函数,将utf-8数据转换为指定编码形式
@param src 待编码的数据源,注意需确保该数据源以utf-8格式编码
@param dest 编码后的数据输出位置
@param destCharset 目标字符集名称,例如:gbk, Big5等
@param useStageFile 是否使用中转文件,如果设置了使用中转区文件,则先将编码后的数据缓存到中转区文件,编码成功后再从中转区文件拷贝到dest中
@return error

func EncodingOf

func EncodingOf(name string) (encoding.Encoding, error)

func MakeByteBuffer

func MakeByteBuffer(initSize int) *bytes.Buffer

func MakeByteReader

func MakeByteReader(src []byte) io.Reader

func MakeStringReader

func MakeStringReader(src string) io.Reader

func MakeTempFile

func MakeTempFile() (*os.File, error)

func RemoveCharsetAlias

func RemoveCharsetAlias(alias string)

func RemoveTempFile

func RemoveTempFile(file *os.File)

Types

type Charset

type Charset string
const EUCKR Charset = "EUC-KR"

func GetCharsetByAlias

func GetCharsetByAlias(alias string) (Charset, error)

type UnknownCharset

type UnknownCharset struct {
	// contains filtered or unexported fields
}

func UnknownCharsetError

func UnknownCharsetError(charset Charset) UnknownCharset

func (UnknownCharset) Error

func (e UnknownCharset) Error() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL