diff --git a/engine.go b/engine.go index ee31e47c..90e36b36 100644 --- a/engine.go +++ b/engine.go @@ -67,6 +67,7 @@ type Engine struct { Logger io.Writer Cacher Cacher UseCache bool + charset string } func (engine *Engine) SetMapper(mapper IMapper) { diff --git a/xorm.go b/xorm.go index 06c30c41..c0bf905f 100644 --- a/xorm.go +++ b/xorm.go @@ -6,6 +6,7 @@ import ( "os" "reflect" "runtime" + "strings" "sync" ) @@ -28,6 +29,11 @@ func NewEngine(driverName string, dataSourceName string) (*Engine, error) { engine.dialect = &sqlite3{} } else if driverName == MYSQL { engine.dialect = &mysql{} + index := strings.Index(strings.ToLower(dataSourceName), "charset=") + tempstr := dataSourceName[index+8:] + index = strings.Index(strings.ToLower(tempstr), "&") + tempstr = tempstr[:index] + engine.charset = tempstr } else if driverName == POSTGRES { engine.dialect = &postgres{} engine.Filters = append(engine.Filters, &PgSeqFilter{})