/* Wraps the iconv API present on most systems, which allows for conversion of bytes from one encoding to another. This package additionally provides some convenient interface implementations like a Reader and Writer. */ package iconv // All in one Convert method, rather than requiring the construction of an iconv.Converter func Convert(input []byte, output []byte, fromEncoding string, toEncoding string) (bytesRead int, bytesWritten int, err error) { // create a temporary converter converter, err := NewConverter(fromEncoding, toEncoding) if err == nil { // call converter's Convert bytesRead, bytesWritten, err = converter.Convert(input, output) if err == nil { var shiftBytesWritten int // call Convert with a nil input to generate any end shift sequences _, shiftBytesWritten, err = converter.Convert(nil, output[bytesWritten:]) // add shift bytes to total bytes bytesWritten += shiftBytesWritten } // close the converter converter.Close() } return } // All in one ConvertString method, rather than requiring the construction of an iconv.Converter func ConvertString(input string, fromEncoding string, toEncoding string) (output string, err error) { // create a temporary converter converter, err := NewConverter(fromEncoding, toEncoding) if err == nil { // convert the string output, err = converter.ConvertString(input) // close the converter converter.Close() } return }