iconv

package module
v1.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 26, 2020 License: Apache-2.0 Imports: 5 Imported by: 30

README

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
	}
}

Documentation

Overview

Package iconv is golang bindings to libiconv that converts string to requested character encoding.

Index

Constants

View Source
const DefaultBufSize = 4096

DefaultBufSize const

Variables

View Source
var (
	// EILSEQ error
	EILSEQ = syscall.Errno(C.EILSEQ)
	// E2BIG error
	E2BIG = syscall.Errno(C.E2BIG)
)

Functions

This section is empty.

Types

type Iconv

type Iconv struct {
	Handle C.iconv_t
}

Iconv represents an iconv handle.

func Open

func Open(tocode string, fromcode string) (cd Iconv, err error)

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

func (Iconv) Close

func (cd Iconv) Close() error

Close closes the iconv handle.

func (Iconv) Conv

func (cd Iconv) Conv(b []byte, outbuf []byte) (out []byte, inleft int, err error)

Conv converts text to requested character encoding.

func (Iconv) ConvString

func (cd Iconv) ConvString(s string) string

ConvString converts string to requested character encoding.

func (Iconv) Do

func (cd Iconv) Do(inbuf []byte, in int, outbuf []byte) (out, inleft int, err error)

Do converts text to requested character encoding.

func (Iconv) DoWrite

func (cd Iconv) DoWrite(w io.Writer, inbuf []byte, in int, outbuf []byte) (inleft int, err error)

DoWrite converts text to requested character encoding and writes into a Writer.

type Reader

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

Reader represents an auto encoding converting Reader.

func NewReader

func NewReader(cd Iconv, input io.Reader, bufSize int) *Reader

NewReader creates a new reader.

func (*Reader) Input

func (r *Reader) Input(r1 io.Reader)

Input changes the input stream.

func (*Reader) Read

func (r *Reader) Read(b []byte) (n int, err error)

type Writer

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

Writer represents an auto encoding converting Writer.

func NewWriter

func NewWriter(cd Iconv, output io.Writer, bufSize int, autoSync bool) *Writer

NewWriter creates a new writer.

func (*Writer) AutoSync

func (w *Writer) AutoSync(b bool)

AutoSync sets the autosync flag.

func (*Writer) Output

func (w *Writer) Output(w1 io.Writer)

Output changes the output stream.

func (*Writer) Sync

func (w *Writer) Sync() error

Sync syncs buffered text to output stream.

func (*Writer) Write

func (w *Writer) Write(b []byte) (n int, err error)

func (*Writer) WriteString

func (w *Writer) WriteString(b string) (n int, err error)

WriteString writes a string.

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

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