go解决使用oci8读取字符集为GBK的oracle的中文乱码问题

go解决使用oci8读取字符集为GBK的oracle的中文乱码问题 - 尼古拉斯胖狗 - 博客园

因为go编程中需要的编码字符集是UTF-8,所以在读取字符集为GBK的Oracle中文数据时显示乱码,此时我们需要用到"github.com/axgle/mahonia" "github.com/djimenez/iconv-go" 两个包来解决,话不多说上代码:

//os.Setenv("NLS_LANG", "SIMPLIFIED CHINESE_CHINA.AL32UTF8")
//os.Setenv("NLS_LANG", "SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
conf := tools.DecodeConfig(filePath)
fmt.Println(conf.Oracle)
err := conf.Oracle.InitDB()
if err != nil {
fmt.Println("define")
}
DB,_ := conf.Oracle.NewConn()
user := new(User)
sql := "select * from "user""
rows, _ := DB.Query(sql)
if err := recover(); err != nil {
fmt.Println(err) // 这里的err其实就是panic传入的内容
return
}
defer rows.Close()
//enc := mahonia.NewDecoder("UTF-8")
enc := mahonia.NewEncoder("UTF-8")
for rows.Next() {
if err = rows.Scan(&user.Id,&user.Name,&user.Age); err != nil {
fmt.Println(err)
return
}
//user.Name, _ = iconv.ConvertString(user.Name, "utf-8", "gb2312")
user.Name, _ = iconv.ConvertString(user.Name, "gb2312", "utf-8")
user.Name = enc.ConvertString(user.Name)
fmt.Println(user)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值