2018-07-25 Fred Gleason <fredg@paravelsystems.com>

* Fixed a bug in the 'RDEscapeString' function that caused corruption
	in UTF-8 strings.
	* Added a UTF-8 complaint MySQL driver in 'drivers/qt3-mysql-utf/'.
This commit is contained in:
Fred Gleason
2018-07-25 07:44:48 -04:00
parent c722e4fe09
commit 15f21fb4ec
16 changed files with 1503 additions and 62 deletions

View File

@@ -76,74 +76,32 @@ QString RDCheckDateTime(QDate const &date, QString const &format)
QString RDEscapeString(QString const &str)
{
QString orig=str;
QString res;
for(unsigned i=0;i<str.length();i++) {
switch(((const char *)str)[i]) {
case '(':
res+=QString("\\\(");
break;
QChar c=orig.ref(i);
switch(c) {
case '"':
res+=QString("\\\"");
break;
case ')':
res+=QString("\\)");
break;
case '`':
res+=QString("\\`");
break;
case '{':
res+=QString("\\\{");
break;
case '\'':
res+=QString("\\\'");
break;
case '"':
res+=QString("\\\"");
break;
case '\\':
res+=QString("\\");
res+=QString("\\");
break;
case '`':
res+=QString("\\`");
break;
case '[':
res+=QString("\\\[");
break;
case '\'':
res+=QString("\\\'");
break;
case '\\':
res+=QString("\\");
res+=QString("\\");
break;
case '?':
res+=QString("\\\?");
break;
case ' ':
res+=QString("\\ ");
break;
case '&':
res+=QString("\\&");
break;
case ';':
res+=QString("\\;");
break;
case '<':
res+=QString("\\<");
break;
case '>':
res+=QString("\\>");
break;
case '|':
res+=QString("\\|");
break;
default:
res+=((const char *)str)[i];
break;
default:
res+=c;
break;
}
}