diff --git a/src/lib/lightmediascanner_db_common.c b/src/lib/lightmediascanner_db_common.c index e7a4b0c..a8ec54a 100644 --- a/src/lib/lightmediascanner_db_common.c +++ b/src/lib/lightmediascanner_db_common.c @@ -2,6 +2,9 @@ #include #include #include +#include +#include +#include #if SQLITE_VERSION_NUMBER < 3003009 int @@ -127,7 +130,16 @@ lms_db_bind_text(sqlite3_stmt *stmt, int col, const char *text, int len) int r; if (text) - r = sqlite3_bind_text(stmt, col, text, len, SQLITE_STATIC); + { + char *locale = setlocale(LC_ALL, ""); + iconv_t cd = iconv_open("UTF-8", locale); + char *inbuf = strdup(text); + size_t inbytesleft = strlen(inbuf); + char outbuf[PATH_MAX]; + size_t outbytesleft = PATH_MAX; + iconv(cd, &inbuf, &inbytesleft, (char **) &outbuf, &outbytesleft); + r = sqlite3_bind_text(stmt, col, outbuf, len, SQLITE_STATIC); + } else r = sqlite3_bind_null(stmt, col);