github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/f/convert_encoding.go (about)

     1  package f
     2  
     3  import (
     4  	"bytes"
     5  	"io/ioutil"
     6  
     7  	"golang.org/x/net/html/charset"
     8  	"golang.org/x/text/encoding/simplifiedchinese"
     9  	"golang.org/x/text/transform"
    10  )
    11  
    12  // GbkToUtf8 convert encoding simplified chinese text.
    13  func GbkToUtf8(s []byte) ([]byte, error) {
    14  	reader := transform.NewReader(bytes.NewReader(s), simplifiedchinese.GBK.NewDecoder())
    15  	d, e := ioutil.ReadAll(reader)
    16  	if e != nil {
    17  		return nil, e
    18  	}
    19  	return d, nil
    20  }
    21  
    22  // ToUtf8 convert encode simplified to utf-8.
    23  func ToUtf8(s []byte, encode string) ([]byte, error) {
    24  	byteReader := bytes.NewReader(s)
    25  	reader, err := charset.NewReaderLabel(encode, byteReader)
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  	if dst, err := ioutil.ReadAll(reader); err != nil {
    30  		return nil, err
    31  	} else {
    32  		return dst, nil
    33  	}
    34  }