Skip to content
/ iconv Public

Golang bindings to libiconv - Convert string to requested character encoding

License

Notifications You must be signed in to change notification settings

qiniu/iconv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Jun 26, 2020
e4f807f · Jun 26, 2020

History

82 Commits
Jun 26, 2020
Mar 10, 2013
Jun 26, 2020
Apr 12, 2016
Jun 26, 2020
Jun 26, 2020
Jun 26, 2020
Jun 26, 2020
Jun 26, 2020
Jun 26, 2020
Jun 26, 2020

Repository files navigation

iconv: libiconv for go

LICENSE Build Status Go Report Card GitHub release Coverage Status GoDoc

Qiniu Logo

iconv is a libiconv wrapper for go. libiconv Convert string to requested character encoding.

Document

See http://godoc.org/github.com/qiniu/iconv

Note: Open returns a conversion descriptor cd, cd contains a conversion state and can not be used in multiple threads simultaneously.

Install

go get github.com/qiniu/iconv

Example

Convert string

package main

import (
	"fmt"
	"github.com/qiniu/iconv"
)

func main() {

	cd, err := iconv.Open("gbk", "utf-8") // convert utf-8 to gbk
	if err != nil {
		fmt.Println("iconv.Open failed!")
		return
	}
	defer cd.Close()

	gbk := cd.ConvString("你好,世界!")

	fmt.Println(gbk)
}

Output to io.Writer

package main

import (
	"fmt"
	"github.com/qiniu/iconv"
)

func main() {

	cd, err := iconv.Open("gbk", "utf-8") // convert utf-8 to gbk
	if err != nil {
		fmt.Println("iconv.Open failed!")
		return
	}
	defer cd.Close()

	output := ... // eg. output := os.Stdout || ouput, err := os.Create(file)
	autoSync := false // buffered or not
	bufSize := 0 // default if zero
	w := iconv.NewWriter(cd, output, bufSize, autoSync)

	fmt.Fprintln(w, "你好,世界!")

	w.Sync() // if autoSync = false, you need call Sync() by yourself
}

Input from io.Reader

package main

import (
	"fmt"
	"io"
	"os"
	"github.com/qiniu/iconv"
)

func main() {

	cd, err := iconv.Open("utf-8", "gbk") // convert gbk to utf8
	if err != nil {
		fmt.Println("iconv.Open failed!")
		return
	}
	defer cd.Close()
	
	input := ... // eg. input := os.Stdin || input, err := os.Open(file)
	bufSize := 0 // default if zero
	r := iconv.NewReader(cd, input, bufSize)
	
	_, err = io.Copy(os.Stdout, r)
	if err != nil {
		fmt.Println("\nio.Copy failed:", err)
		return
	}
}

About

Golang bindings to libiconv - Convert string to requested character encoding

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages