golang使用oci8读取oracle并正常显示中文

发布日期:2017-03-13 12:18:42
package main

import (
    "database/sql"
    "fmt"
    "os"

    //"github.com/axgle/mahonia"
    //iconv "github.com/djimenez/iconv-go"
    _ "github.com/mattn/go-oci8"
)

func main() {
    //os.Setenv("NLS_LANG", "SIMPLIFIED CHINESE_CHINA.ZHS16GBK")
    os.Setenv("NLS_LANG", "SIMPLIFIED CHINESE_CHINA.AL32UTF8")

    db, err := sql.Open("oci8", "name/pwd@172.16.1.1:1521/dc10g")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer db.Close()

    rows, err := db.Query("select vsl_id,vsl_cnname from st_vessels where vsl_id > 278788 order by vsl_id desc ")
    if err != nil {
        //return err
        fmt.Println(err)
    }
    defer rows.Close()

    //enc := mahonia.NewEncoder("GBK")
    for rows.Next() {
        var vslId string
        var vslName string
        if err = rows.Scan(&vslId, &vslName); err != nil {
            fmt.Println(err)
            return
        }

        //vslId, err = iconv.ConvertString(vslId, "utf-8", "gb2312")
        //vslName, err = iconv.ConvertString(vslName, "utf-8", "gb2312")
        //vslName1 = enc.ConvertString(vslName)
        fmt.Println((vslId + "," + vslName))
    }

    fmt.Println("运行完毕!")
}