Golang 문자 인코딩

3545 단어 golang
추가할 라이브러리
go get code.google.com/p/go.text/encoding
go get code.google.com/p/go.text/transform

 
두 개의 디코딩 함수
 
import (
    "bytes"
    "code.google.com/p/go.text/encoding/simplifiedchinese"
    "code.google.com/p/go.text/transform"
    "io/ioutil"
)

func Decode(s []byte) ([]byte, error) {
    I := bytes.NewReader(s)
    O := transform.NewReader(I, simplifiedchinese.GBK.NewDecoder())
    d, e := ioutil.ReadAll(O)
    if e != nil {
        return nil, e
    }
    return d, nil
}

func Encode(s []byte) ([]byte, error) {
    I := bytes.NewReader(s)
    O := transform.NewReader(I, simplifiedchinese.GBK.NewEncoder())
    d, e := ioutil.ReadAll(O)
    if e != nil {
        return nil, e
    }
    return d, nil
}

다음은 테스트 코드입니다.
func main() {
    log.SetFlags(log.LstdFlags | log.Lshortfile)
    resp, err := http.Get("http://data.earthquake.cn/datashare/globeEarthquake_csn.html")
    if err != nil {
        log.Fatal(err)
    }

    defer resp.Body.Close()
    input, err := ioutil.ReadAll(resp.Body)
    out := make([]byte, len(input))
    out = out[:]
    out, _ = Decode(input)
    ioutil.WriteFile("out.html", out, 0644)
    //func ReadFile(filename string) ([]byte, error)
    input, err = ioutil.ReadFile("out.html")
    out, _ = Encode(input)
    ioutil.WriteFile("out_gb.html", out, 0644)
}

 
그리고 다음은 iconvc 라이브러리에 의존하는 소스 문자 집합 변환 라이브러리입니다.
1. iconv-go, cgo를 통해 iconv 라이브러리 봉인;2. qiniuiconv, 마찬가지로 cgo를 통해 iconv 라이브러리를 봉인한다.3.go-charset, UTF-8을 다른 문자 집합 (비iconv 라이브러리) 으로 변환하는 것을 지원하는 동시에 iconv를 봉인하여 더 많은 문자 집합의 변환을 제공합니다
이것들은 linux에서 사용하면 괜찮아요. 윈도우즈에 도착하면mingw를 설치해야 해요. 그리고 32비트와 64비트의 차이가 있어서 귀찮아서 개인적으로 싫어해요.
또 하나의 Mahonia-a character-set conversion library for Go가 있지만 이 라이브러리는 유지보수를 중단했습니다.
만약 특별한 요구가 없다면, 개인은 코드를 사용하는 것을 건의합니다.google.com/p/go.text/encoding
이 라이브러리는 hg로 설치해야 합니다.python 2.7과Mercurial을 먼저 설치하는 것을 기억하십시오.

좋은 웹페이지 즐겨찾기