Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UTF-8和mymysql包_Mysql_Go - Fatal编程技术网

UTF-8和mymysql包

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

我正在使用将记录插入Go中的MySQL数据库

我试图将UTF-8编码的数据插入表中。如果我直接使用mysql命令提示符插入数据,它就可以正常工作。如果我使用mymysql,LÉchabaud将变成L€™ É查堡

据我所知,mymysql默认使用UTF-8。以防万一,我添加了显式的db.Registerset名称utf8,但这也没有帮助

如果我在插入字符串之前将其打印到屏幕上,它们似乎编码正确

要插入UTF-8编码字符串,我还需要做些什么

以下是相关的代码部分:

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应用程序中也被弄乱了。