From 2f0a5c1809ff58541bb6285de3706671c3c65c01 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 25 Dec 2013 16:08:51 +0800 Subject: [PATCH] analysis mysql conn string for get charset. set charset when use Sync method --- engine.go | 1 + xorm.go | 6 ++++++ 2 files changed, 7 insertions(+) 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{})