golang을 사용하여 ODBC에 연결할 때 가끔 중국어 문자가 깨지는 문제가 발생할 수 있습니다. 이 기사에서는 이 문제를 해결하는 방법을 설명합니다.
먼저 드라이버를 설치해야 합니다. golang에는 ODBC API를 통해 다양한 데이터베이스에 연결할 수 있는 ODBC 라이브러리(odbc)가 있습니다. 그러나 데이터베이스에 연결하려면 ODBC 드라이버가 필요합니다. 여기서는 SQL Server를 예로 들어 ODBC 드라이버를 다운로드한 후 지침에 따라 설치합니다.
ODBC 드라이버를 설치한 후 golang에서 데이터베이스에 연결해야 합니다. 여기서는 타사 ODBC 라이브러리 "jmoiron/sqlx"를 사용합니다. 이 라이브러리를 설치하는 방법은 다음과 같습니다.
go get github.com/jmoiron/sqlx
이 라이브러리는 ODBC 데이터 소스에 연결하는 편리한 방법을 제공합니다. 하지만 아쉽게도 기본적으로 유니코드 문자 집합을 지원하지 않아 중국어 문자가 깨지는 문제가 발생합니다.
해결책은 다음과 같습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!