diff --git a/modules/db_mysql/db_mysql.c b/modules/db_mysql/db_mysql.c
index 9dee5c8..7d32bee 100644
--- a/modules/db_mysql/db_mysql.c
+++ b/modules/db_mysql/db_mysql.c
@@ -38,6 +38,7 @@
 
 unsigned int db_mysql_ping_interval = 5 * 60; /* Default is 5 minutes */
 unsigned int db_mysql_timeout_interval = 2;   /* Default is 6 seconds */
+char *db_mysql_charset = 0;	/* Default is not to set */
 
 static int mysql_mod_init(void);
 
@@ -60,6 +61,7 @@ static cmd_export_t cmds[] = {
 static param_export_t params[] = {
 	{"ping_interval",    INT_PARAM, &db_mysql_ping_interval},
 	{"timeout_interval", INT_PARAM, &db_mysql_timeout_interval},
+	{"charset",	     STR_PARAM, &db_mysql_charset},
 	{0, 0, 0}
 };
 
diff --git a/modules/db_mysql/db_mysql.h b/modules/db_mysql/db_mysql.h
index eeca790..3c35638 100644
--- a/modules/db_mysql/db_mysql.h
+++ b/modules/db_mysql/db_mysql.h
@@ -33,5 +33,6 @@
 
 extern unsigned int db_mysql_ping_interval;
 extern unsigned int db_mysql_timeout_interval;
+extern char *db_mysql_charset;
 
 #endif /* DB_MOD_H */
diff --git a/modules/db_mysql/my_con.c b/modules/db_mysql/my_con.c
index 4bd91a6..439b176 100644
--- a/modules/db_mysql/my_con.c
+++ b/modules/db_mysql/my_con.c
@@ -39,6 +39,18 @@ int db_mysql_connect(struct my_con* ptr)
 	mysql_init(ptr->con);
 	ptr->init = 1;
 
+	if ( db_mysql_charset && db_mysql_charset[0] ) {
+		int ret;
+		LM_DBG("setting char set %s for db %s\n",
+		  db_mysql_charset, ZSW(ptr->id->database));
+		if ( (ret=mysql_options(ptr->con, MYSQL_SET_CHARSET_NAME, 
+		  db_mysql_charset))!=0 ) {
+			LM_ERR("failed to set charset %s for db %s: code %d\n",
+				db_mysql_charset, ZSW(ptr->id->database), ret);
+			// keep going anyways...
+		}
+	}
+
 	if (ptr->id->port) {
 		LM_DBG("opening connection: mysql://xxxx:xxxx@%s:%d/%s\n",
 			ZSW(ptr->id->host), ptr->id->port, ZSW(ptr->id->database));
