windows下go编码转换问题

github上有两个package做编码转换,都是基于iconv,用到了cgo,在linux下没有问题,在windows下用,非常麻烦。采用mingw安装libiconv也不行,一直提示找不到libiconv方法。

最终找到一个官方实现(纯go实现):
https://code.google.com/p/go/source/checkout?repo=text

gbk转utf-8示例:

func gbk2utf8(str byte[])
([]byte, error)
{

return ioutil.ReadAll(transform.NewReader(bytes.NewReader(str), simplifiedchinese.GBK.NewDecoder()))

}

?

经测试没有任何问题,大家可以方便引用,需要导入的包:

"golang.org/x/text/transform""golang.org/x/text/encoding/simplifiedchinese"
					

?

?

如果golang.org下载不下来,可以去github上下载克隆版,

go get github.com/zieckey/golang.org

然后将golang.org移动到src目录下即可。

时间: 2024-08-27 11:01:58

windows下go编码转换问题的相关文章

Windows下字符编码转换

有时候经常使用别人用Tabhost+其它的实现demo.单纯利用Tabhost该如何使用呢? 下面看例子: public class MainActivity extends TabActivity { public TabHost tabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 获取对象 tabHost = getTabH

cocos2d-x教程2:在windows下如何批量转换pvr,ccz为png或jpg

这是一个很常见的功能,但是找了全网,居然找不到,于是借鉴别人的批处理文件,改了下,就可以把整个目录的全部一次批量转换. 将这个bat文件暂定为,myConvert.bat,执行时就把这个bat文件放到要转换的目录,然后双击bat,就可以啦.下面把bat文件贴出来: rem path " "里面内容替换为TexturePacker的安装路径,将bat文件放在图片文件夹直接运行就可以了 @ech off path %path%;"c:\TexturePacker\bin"

windows下文件编码和读写注意

最近写了一个小工具,主要实现自动搜索指定路径下所有文本文件内容,并替换指定字符串,记录下几个容易犯错误的地方. 1,fread读出来的buffer存放到string里,如果要搜索指定的字符串,比如"中华人民共和国",首先要确定文件的编码格式是什么?根据文件的编码格式,对目标串进行编码转换后,才能用string.find去进行查找. 而如何判断文件的编码格式呢,windows下文本文件一般有两种字符集,unicode和gbk,根据文件的前三个字节来决定该文件的编码格式,这三个字节是 &q

python 学习之Windows 下的编码处理!

问题1: 1 Non-ASCII character '\xe9' in file 问题原因:程序编码上出现问题 解决方法:在程序头部加上代码 #-*- coding: UTF-8 -*- 设置代码编码为UTF8即刻正常运行 问题2: windows 下print 乱码 错误原因:源码文件的编码格式为utf-8,但是window的本地默认编码是gbk,所以在控制台直接打印utf-8的字符串当然是乱码了! 解决方法:比较通用的解决方法  完美兼容windows 和 ubuntu import sy

在windows下如何批量转换pvr,ccz为png或jpg

这是一个很常见的功能,但是找了全网,居然找不到,于是借鉴别人的批处理文件,改了下,就可以把整个目录的全部一次批量转换. 将这个bat文件暂定为,myConvert.bat,执行时就把这个bat文件放到要转换的目录,然后双击bat,就可以啦.下面把bat文件贴出来: rem path " "里面内容替换为TexturePacker的安装路径,将bat文件放在图片文件夹直接运行就可以了 @ech off path %path%;"c:\TexturePacker\bin"

Python2.7在Windows下CMD编码为65001/utf-8时print报错[Errno 0]/[Errno 2]

使用python2.7处理unicode的字符串,环境变量已设置PYTHONIOENCODING为utf-8,cmd编码为utf-8时print unicode字符串会报错[Errno 0]或[Errno 2] #coding:utf-8 import os os.system("chcp 65001") a = u"你好こんにちは" print a 此时会报错,如果字符串只含ASCII字符就不会报错,如果cmd用其他编码则可能输出乱码但不会报错 经查这是windo

windows下字符编码的转化函数

//GB2312到UTF-8的转换static int GB2312ToUtf8(const char* gb2312, char* utf8){int len = MultiByteToWideChar(CP_ACP, 0, gb2312, -1, NULL, 0);wchar_t* wstr = new wchar_t[len+1];memset(wstr, 0, len+1);MultiByteToWideChar(CP_ACP, 0, gb2312, -1, wstr, len);len

Cocos2d-x程序Windows下VC中文乱码的解决(用MultiByteToWideChar进行转换,VC2010有非常厉害的execution_character_set)

Cocos2d-x默认字符串常量编码都是UTF8的,而Windows中的VC默认都是跟系统相同,比如简体Windows是GB2312或者GBK.繁体就是BIG5编码.而我们大多数中国人用VC编译出来的字符串常量也就是GBK编码的字符串.在Cocos2d-x界面上绘制的时候它是不知道的,只会认为这个是UTF8字符串,结果就出现了乱码.解决方式也很简单.找个头文件加入下面的代码 #ifdef WIN32 inline std::wstring AnsiToUnicode(const char* bu

解决Linux文档显示中文乱码问题以及编码转换

解决Linux文档显示中文乱码问题以及编码转换 使vi支持GBK编码 由于Windows下默认编码是GBK,而linux下的默认编码是UTF-8,所以打开会变成乱码.因此,我们只需要改变一下配置文件,使得vi支持GBK 打开~/.vimrc文件 加上 1.let &termencoding=&encoding2.set fileencodings=utf-8,gbk 然后:wq保存并退出 再次打开vi就显示正常了. 将其它的编码的文件转换成utf-8 另外,还可以将其它的编码的文件转换成u