`
bishen
  • 浏览: 11939 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

iconv.go,GO编码转换

阅读更多
/*
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

/*
#include <errno.h>
*/
import "C"
import "os"

// Alias os.Error for convenience
type Error os.Error

// Error codes returned from iconv functions
var (
	E2BIG Error = os.Errno(int(C.E2BIG))
	EBADF Error = os.Errno(int(C.EBADF))
	EINVAL Error = os.Errno(int(C.EINVAL))
	EILSEQ Error = os.Errno(int(C.EILSEQ))
	ENOMEM Error = os.Errno(int(C.ENOMEM))
)

// 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
}
分享到:
评论
1 楼 ysw1983 2011-04-14  
博主,请问你的NewConverter方法是哪来的呀

相关推荐

    iconv::rocket:纯正的Golang工具

    go get -u github.com/mushroomsir/iconv 支持字符集 UTF-8 GBK GB-18030 GB2312 大5 ISO-8859-1 EUC-JP Shift_JIS 更多即将推出 用法 import ( github . com / mushroomsir / iconv ) 转换字符串值 可以...

    iconv:Golang绑定到libiconv-将字符串转换为请求的字符编码

    libiconv将字符串转换为请求的字符编码。 文档 参见 注意:Open返回一个转换描述符cd,cd包含转换状态,不能同时在多个线程中使用。 安装 go get github.com/qiniu/iconv 例子 转换字串 package main import ( ...

    iconv_windowsx64

    总的来说,iconv_windowsx64是Go语言在Windows 64位平台上处理字符编码转换的重要工具。它可以帮助开发者轻松地处理各种编码格式的数据,提高程序的兼容性和可扩展性,降低因为编码问题导致的错误和困扰。通过深入...

    gbk转utf-8批量转换

    标题中的“GBK转UTF-8批量转换”是指在计算机编程...总之,GBK转UTF-8批量转换是解决多语言文本处理中常见的问题,通过正确的工具和方法,可以有效地实现大量文件的编码转换,确保在各种环境中正确显示和处理中文字符。

    golang解析网页利器goquery的使用方法

    为了解决这个问题,我们可以引入iconv-go库来进行编码转换。安装iconv-go如下: ```bash go get github.com/djimenez/iconv-go ``` 然后在解析网页之前,先使用iconv-go将非UTF-8编码的响应体转换为UTF-8: ```go...

    VMware8.0.2 rar1

    9. **iconv.dll**:字符集转换库,用于在不同的字符编码之间进行转换,确保数据在不同系统间的兼容性。 10. **glib-2.0.dll**:这是GObject库的一部分,是GNOME项目的基础库,提供了一组通用的数据结构和函数,...

    php封装js类,很好用的

    接着是关于编码转换的问题。在PHP中,`iconv`函数用于在不同字符编码之间转换字符串。例如,将GB2312编码的字符串转换为UTF-8: ```php $utf = iconv('GB2312', 'UTF-8', $_REQUEST['keyword']); ``` 反之,如果...

    Linux命令有哪些-.docx

    30. `echo "ADSF" | iconv -f UTF8 -t GBK`:将UTF8编码的文本转换为GBK编码。 31. `cat -n file`:在输出的文件内容前加上行号。 32. `chattr +i file`:设置文件为只读,使得连root用户也无法修改。 33. `...

    bcp常见问题集合

    可以通过 `iconv` 工具将文件从一种编码转换为另一种编码。 **示例**: 假设原始文件的数据编码为 ASCII,而数据库使用的编码为 UTF-8,可以使用以下命令进行转换: ```bash iconv -f ASCII -t UTF-8 ...

    linux.chm文档

    iconv -l 列出已知的编码 iconv -f fromEncoding -t toEncoding inputFile &gt; outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding. ...

    【运维经】第0章——目录

    第十九章“iconv,文件编码转换”会介绍如何处理不同编码格式的文件,确保数据在不同系统间正确传输。 总的来说,这个运维经专栏是针对IT从业者的一份实用指南,通过这些文章,读者可以学习到提高工作效率的多种...

Global site tag (gtag.js) - Google Analytics