go-iconv: libiconv for go

Summary

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

go-iconv project's homepage is: https://github.com/xushiwei/go-iconv

Install

git clone git://github.com/xushiwei/go-iconv.git
cd go-iconv
make install

Example

Convert string

import (
    "fmt"
    "xushiwei.com/iconv"
)
 
func main() {
 
    cd, err := iconv.Open("gbk", "utf-8")
    if err != nil {
        fmt.Println("iconv.Open failed!")
        return
    }
    defer cd.Close()
 
    gbk := cd.ConvString("你好,世界!")
 
    fmt.Println(gbk)
}

Output to io.Writer

import (
    "fmt"
    "xushiwei.com/iconv"
)
 
func main() {
 
    cd, err := iconv.Open("gbk", "utf-8")
    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

import (
    "fmt"
    "io"
    "os"
    "xushiwei.com/iconv"
)
 
func main() {
 
    cd, err := iconv.Open("utf-8", "gbk") // gbk => 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
    }
}
Add a New Comment
or Sign in as Wikidot user
(will not be published)
- +

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License