select name from table;
table是 latin1 编码, 返回后查询结果后,即使将 name 转为 utf-8,日志输出中文仍然乱码。
// 配置数据库连接字符串,确保指定charset=latin1
dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=latin1"
db, err := sql.Open("mysql", dsn)
if err != nil {
log.Fatalf("Failed to connect to database: %v", err)
}
defer db.Close()
连接数据库时指定 charset=latin1 ,按照实际存储的字符集转换
// 如果需要将其转换为 UTF-8,可以使用 mahonia 库
dec := mahonia.NewDecoder("gbk")
utf8Name := dec.ConvertString(name)