展开目录
gb2312字符串转utf-8
golanggb2312utf-8编码转换
X
陈尼玛的博客
记录开发生涯的踩坑经历,用时间来验证成长
加载中

做网站采集的时候见到gb2312这种编码的页面总会很无语。为什么现在还有用gb2312来显示内容的网站,utf-8不是早就统治世界了吗?好在已有成熟的现成解决方案了,我就做一回伸手党吧。

为了验证确实把gb2312代码转为了utf-8,所以这里先生成一个gb2312内容的文件:

curl http://www.shanghai.gov.cn/nw2/nw2314/nw2315/nw4411/index.html>sh.txt

需要安装 golang.org/x/text 这个库,不过我没有翻墙工具,所以我从github上下载代码,并放到src/golang.org/x/text 目录。

go get github.com/golang/text

以下是调试代码,第一次输出的内容中文部分是乱码,延迟3秒输出转换之后的正确内容。

package main

import (
    "bytes"
    "golang.org/x/text/encoding/simplifiedchinese"
    "golang.org/x/text/transform"
    "io/ioutil"
    "fmt"
    "time"
)


func main(){
  gbkcodes,\_  := ioutil.ReadFile("sh.txt")
  fmt.Println(string(gbkcodes))
  fmt.Println("直接转string会乱码↑↑↑↑,稍等3秒见证奇迹。。")
  time.Sleep(3e9)
  t := transform.NewReader(bytes.NewReader(gbkcodes), simplifiedchinese.GBK.NewDecoder())
  utf8codes,\_ := ioutil.ReadAll(t)
  fmt.Println(string(utf8codes))

}

相关文档

暂无

随便看看

  1. git 大小写不区分问题

  2. 定长消息队列读写优化

  3. css多行文本超出截断显示省略号

  4. mac 终端运行后台程序如何在终端关闭时继续运行

  5. SSL certificate problem: self signed certificate in certificate chain

  6. npm包命令行调用

  7. nodejs俄罗斯方块

  8. 模拟307跳转情况

  9. webrtc服务搭建

  10. linux自启动/禁止自启动服务

  11. TIME_WAIT过多

  12. git配置服务端支持http认证

  13. git 设置代理服务器

  14. mongodb2.4 添加用户

  15. 树莓派配置收发邮件

  16. 猴子选大王算法问题

  17. 数据库清理优化

  18. 配置mysql ssl连接

  19. html表格导出csv文件并下载

畅言模块加载中