Rumah >pembangunan bahagian belakang >Golang >golang odbc kod kacau
Apabila menggunakan golang untuk menyambung ke ODBC, kadangkala anda akan menghadapi masalah aksara Cina yang kacau. Artikel ini akan menerangkan cara menyelesaikan masalah ini.
Pertama, kita perlu memasang pemacu. Terdapat perpustakaan ODBC (odbc) dalam golang, yang boleh menyambung ke pelbagai pangkalan data melalui API ODBC. Walau bagaimanapun, kami memerlukan pemacu ODBC untuk menyambung ke pangkalan data. Di sini, kami mengambil SQL Server sebagai contoh Selepas memuat turun pemacu ODBC, ikut arahan untuk memasangnya.
Selepas memasang pemacu ODBC, kita perlu menyambung ke pangkalan data dari golang. Di sini, kami akan menggunakan perpustakaan ODBC pihak ketiga "jmoiron/sqlx". Begini cara memasang pustaka ini:
go get github.com/jmoiron/sqlx
Pustaka ini menyediakan cara yang mudah untuk menyambung ke sumber data ODBC. Tetapi malangnya, ia tidak menyokong set aksara Unicode secara lalai, yang membawa kepada masalah aksara Cina yang kacau.
Berikut ialah penyelesaiannya:
Kaedah menggunakan dsn adalah seperti berikut:
import ( "github.com/jmoiron/sqlx" "database/sql" ) func main() { connStr := "driver={SQL Server Native Client 11.0};server=127.0.0.1;database=mydb;uid=sa;pwd=password;Trusted_Connection=yes;" db, err := sqlx.Connect("odbc", connStr) if err != nil { log.Fatalln(err) } db.SetMaxIdleConns(2) db.SetMaxOpenConns(0) defer db.Close() rows, err := db.Query("SELECT * FROM mytable") if err != nil { log.Fatalln(err) } defer rows.Close() var ( id int name string ) for rows.Next() { err := rows.Scan(&id, &name) if err != nil { log.Fatalln(err) } fmt.Println(id, name) } }
Di sini, kami menggunakan rentetan DSN sambungan ke sumber data ODBC. Rentetan ini mengandungi nama sumber data (DSN) dan butiran sambungan kepada sumber. Dalam contoh ini, kami menggunakan pemacu SQL Server Native Client 11.0 untuk menyambung ke pangkalan data mydb setempat. Ambil perhatian bahawa aksara khas seperti ";" dan "=" boleh digunakan dalam rentetan DSN ini, jadi ia perlu dilepaskan.
Jika anda tidak mahu menggunakan dsn untuk menyelesaikan masalah kacau Cina, anda boleh menggunakan API odbc untuk menetapkan set aksara yang disambungkan secara manual. Kaedah menetapkan set aksara dalam golang adalah seperti berikut:
import ( "github.com/jmoiron/sqlx" "database/sql" "strconv" ) func main() { connStr := "driver={SQL Server Native Client 11.0};server=127.0.0.1;database=mydb;uid=sa;pwd=password;Trusted_Connection=yes;" db, err := sqlx.Connect("odbc", connStr) if err != nil { log.Fatalln(err) } db.SetMaxIdleConns(2) db.SetMaxOpenConns(0) defer db.Close() // 设置字符集 _, err = db.Exec("SET NAMES 'UTF8'") if err != nil { log.Fatalln(err) } rows, err := db.Query("SELECT * FROM mytable") if err != nil { log.Fatalln(err) } defer rows.Close() var ( id int name string ) for rows.Next() { err := rows.Scan(&id, &name) if err != nil { log.Fatalln(err) } fmt.Println(id, name) } }
Di sini, kami melaksanakan pernyataan SQL melalui kaedah "Exec" API odbc, dengan itu menetapkan set aksara kepada "UTF8".
Ringkasnya, kita boleh menggunakan API dsn atau odbc untuk menetapkan set aksara secara manual untuk menyelesaikan masalah kacau Cina. Tidak kira kaedah mana pun, kami boleh menyambung ke sumber data ODBC dalam golang dan memproses aksara Cina dengan betul.
Atas ialah kandungan terperinci golang odbc kod kacau. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!