UTF-8和mymysql包
我正在使用将记录插入Go中的MySQL数据库 我试图将UTF-8编码的数据插入表中。如果我直接使用mysql命令提示符插入数据,它就可以正常工作。如果我使用mymysql,LÉchabaud将变成L€™ É查堡 据我所知,mymysql默认使用UTF-8。以防万一,我添加了显式的db.Registerset名称utf8,但这也没有帮助 如果我在插入字符串之前将其打印到屏幕上,它们似乎编码正确 要插入UTF-8编码字符串,我还需要做些什么 以下是相关的代码部分:UTF-8和mymysql包,mysql,go,Mysql,Go,我正在使用将记录插入Go中的MySQL数据库 我试图将UTF-8编码的数据插入表中。如果我直接使用mysql命令提示符插入数据,它就可以正常工作。如果我使用mymysql,LÉchabaud将变成L€™ É查堡 据我所知,mymysql默认使用UTF-8。以防万一,我添加了显式的db.Registerset名称utf8,但这也没有帮助 如果我在插入字符串之前将其打印到屏幕上,它们似乎编码正确 要插入UTF-8编码字符串,我还需要做些什么 以下是相关的代码部分: func NewDbConnec
func NewDbConnection(dbName string, dbServer string, dbUser string, dbPass string) (*Db, error) {
me := Db{}
me.Conn = mysql.New("tcp", "", dbServer, dbUser, dbPass, dbName)
err := me.Conn.Connect()
me.Conn.Register("set names utf8")
return &me, err
}
func (db *Db) InsertRelease(r Release) (uint64, error) {
stmt, err := db.Conn.Prepare(`insert into releases
(name,artist_id,itunes_id,genre,label_name,image_source,
created_at,updated_at,date,scraped,itunes)
values (?,?,?,?,?,?,?,?,?,true,?)`)
res, err := stmt.Run(r.Name, r.ArtistID, r.ItunesID, r.Genre, r.LabelName,
r.ImageURL, r.CreatedAt, r.UpdatedAt, r.ReleaseDate, r.ItunesURL)
return res.InsertId(), err
}
type Release struct {
ID, ArtistID, ItunesID, ArtistItunesID, Type int
Name, ImageURL, Genre, LabelName string
ItunesURL string
ReleaseDate, CreatedAt, UpdatedAt time.Time
}
以防万一:您能否连接到数据库并在此处发布SHOW CREATE TABLE YourTable\G?这应该在末尾有一个默认字符集=utf8。是否值得在这里包含您的代码,以排除这方面的任何问题?已确认SHOW CREATE output以以下方式结束:ENGINE=InnoDB AUTO_INCREMENT=176375 DEFAULT CHARSET=utf8 COLLATE=utf8\u unicode\u ci您如何发出返回损坏字符的read命令?从围棋代码?或者来自mysql命令提示符?mysql命令提示符中的字符被弄乱了,但在DB正在供电的UTF-8 rendering Rails应用程序中也被弄乱了。