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)
}

posted @ 2020-06-30 14:47  尼古拉斯胖狗  阅读(704)  评论(0编辑  收藏  举报