mymysqlを使用して、Go の MySQL DB にレコードを挿入しています。
UTF-8 でエンコードされたデータをテーブルに挿入しようとしています。mysql コマンド プロンプトを使用してデータを直接挿入すると、正常に動作します。mymysql を使用すると、 にL’ Échafaud
なりL’ Échafaud
ます。
mymysql はデフォルトで UTF-8 を使用するというのが私の理解でした。念のため明示的に追加しましたdb.Register("set names utf8")
が、それも役に立ちませんでした。
文字列を挿入する前に画面に出力すると、正しくエンコードされているように見えます。
UTF-8 でエンコードされた文字列を挿入するために、Go で他に何かする必要がありますか?
関連するコード セクションは次のとおりです。
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
}