golang を使用して ODBC に接続すると、中国語の文字化けの問題が発生することがあります。この記事では、この問題を解決する方法を説明します。
まず、ドライバーをインストールする必要があります。 golang には ODBC ライブラリ (odbc) があり、ODBC API を介してさまざまなデータベースに接続できます。ただし、データベースに接続するには ODBC ドライバーが必要です。ここでは SQL Server を例として、ODBC ドライバーをダウンロードした後、指示に従ってインストールします。
ODBC ドライバーをインストールした後、golang からデータベースに接続する必要があります。ここでは、サードパーティの ODBC ライブラリ「jmoiron/sqlx」を使用します。このライブラリをインストールする方法は次のとおりです。
go get github.com/jmoiron/sqlx
このライブラリは、ODBC データ ソースに接続するための便利な方法を提供します。しかし、残念ながら、デフォルトでは Unicode 文字セットをサポートしていないため、中国語の文字化けの問題が発生します。
次が解決策です:
dsn を使用する方法は次のとおりです:
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) } }
ここでは DSN を使用します。 ODBC データ ソースへの文字列接続。この文字列には、データ ソース名 (DSN) とソースへの接続の詳細が含まれます。この例では、SQL Server Native Client 11.0 ドライバーを使用してローカルの mydb データベースに接続します。この DSN 文字列では「;」や「=」などの特殊文字を使用できるため、エスケープする必要があることに注意してください。
中国語の文字化けの問題を解決するために dsn を使用したくない場合は、odbc API を使用して接続された文字セットを手動で設定できます。 golang での文字セットの設定方法は次のとおりです。
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) } }
ここでは、odbc API の「Exec」メソッドで SQL 文を実行し、文字セットを「UTF8」に設定します。
つまり、dsn または odbc API を使用して手動で文字セットを設定し、中国語の文字化けの問題を解決できます。どの方法でも、golang で ODBC データ ソースに接続し、漢字を正しく処理できます。
以上がgolang odbcコードが文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。